구현

2009-10-05 8 views
23

나는 다음과 같은 경우이 : 이제구현

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

을; "User"객체가있는 경우 - 이것이 리플렉션을 사용하여 IPerson을 구현하는지 어떻게 확인할 수 있습니까? 좀 더 정확히 말하면, "IPerson"인터페이스를 구현하는 SomeUser 속성을 가질 수있는 객체가 있습니다. 필자의 경우 실제로 사용자가 있지만 이것이 리플렉션을 통해 확인하고자하는 것입니다. 나는 ... 나는 그것이 IPerson에 구현되었는지 확인하려면이 "사용자가"이기 때문에 속성 유형을 확인하는 방법을 알아낼 수는 없지만 :

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

(이의 단순화합니다 내 실제 사례이지만 요점은 동일해야합니다 ...)

+4

이미 개체 인스턴스가있는 경우 개체가 특정 인터페이스를 구현하는지 여부를 확인하기 위해 리플렉션이 필요하지 않습니다. 'if (objUser is IPerson)'을 간단히 체크 할 수 있습니다. –

+0

0xA3 님의 댓글에 정답이 없습니까? – itchi

답변

13
var control = _container.Resolve(objType); 
var prop = viewType.GetProperty("SomeUser"); 
if ((prop != null) && (prop.PropertyType.GetInterfaces().Contains(typeof(IPerson))) 
{ .. } 
+0

고마워,하지만 내가 Type.IsAssignableFrom과 함께 갈 거라 생각해. – stiank81