Get all properties for a class name using reflecti

2019-07-30 05:53发布

问题:

I am loading the dll as shown below,

Type[] _Type = Assembly.GetAssembly(typeof(StdAdapter)).GetTypes();

Now I want to get all the properties for a particular 'class name' which is being passed as a string.

Please suggest how to achieve this.

Thanks

回答1:

You could use a little bit of Linq to Objects to get the class you need from the array:

_Type.SingleOrDefault(t => t.Name == "CLASS_NAME").GetProperties();


回答2:

You can use

Type objectType = Type.GetType("ClassName");

When you get this time you can use the type for further reflection:

objectType.GetProperties();

which will return the properties.

This mean insteaf of your call into an array, you could use:

Assembly.GetAssembly(typeof(StdAdapter)).GetType("ClassName");

The only other thing would be to loop through the array in order to find the right Type, not sure performance wise which would be better, i'd go with GetType() though.



回答3:

The Type.GetProperties() function returns an array of PropertyInfo objects.

So you would have:

foreach(Type current in _Type)
{
  PropertyInfo[] properties = current.GetProperties();
}

You could also do: typeof(StdAdapter).GetProperties()