views:

643

answers:

3

I have the following case:

public interface IPerson { .. }    
public class Person : IPerson { .. }    
public class User : Person { .. }

Now; if I have a "User" object - how can I check if this implements IPerson using reflection? To be more precise I have an object that might have a property SomeUser, which should be of some type implementing the interface "IPerson". In my case I actually have a User, but this is what I want to check through reflection. I can't figure out how to check the property type since it is a "User", but I want to check if it implements IPerson...:

var control = _container.Resolve(objType); // objType is User here
var prop = viewType.GetProperty("SomeUser");
if ((prop != null) && (prop.PropertyType is IPerson)) 
{ .. }

(Note that this is a simplification of my actual case, but the point should be the same...)

+12  A: 

Check the Type.IsAssignableFrom method.

Konamiman
Thanks! Just what I needed :-)
stiank81
+6  A: 
var control = _container.Resolve(objType); 
var prop = viewType.GetProperty("SomeUser");
if ((prop != null) && (prop.PropertyType.GetInterfaces().Contains(typeof(IPerson))) 
{ .. }
Stefan Steinegger
Thanks, but think I'll go with Type.IsAssignableFrom.
stiank81