How can I determine if a property is a kind of array.
Example:
public bool IsPropertyAnArray(PropertyInfo property)
{
// return true if type is I
You appear to be asking two different questions: whether a type is an array (e.g. string[]
) or any collection type.
For the former, simply check property.PropertyType.IsArray
.
For the latter, you have to decide what is the minimum criteria you want a type to conform to. For example, you could check for the non-generic IEnumerable
by using typeof(IEnumerable).IsAssignableFrom(property.PropertyType)
. You can also use this for generic interfaces if you know the actual type of T, e.g. typeof(IEnumerable
.
Checking for the generic IEnumerable
or any other generic interface without knowing the value of T can be done by checking if property.PropertyType.GetInterface(typeof(IEnumerable<>).FullName)
is not null
. Note that I didn't specify any type for T
in that code. You can do the same for IList
or any other type you're interested in.
For example you could use the following if you want to check for the generic IEnumerable
:
public bool IsPropertyACollection(PropertyInfo property)
{
return property.PropertyType.GetInterface(typeof(IEnumerable<>).FullName) != null;
}
Arrays also implement IEnumerable, so they will also return true
from that method.