检查一个对象是否从一个类型继承

问题描述:

有人可以请一些代码来帮助检查一个对象是否从一个特定的类型继承。检查一个对象是否从一个类型继承

这里是我的代码:

public class Class1 
{ 

} 

public class Class2 : Class1 
{ 

} 

private void TestType() 
{ 
    var collection = new List<Class1>(); 
    collection.Add(new Class1()); 
    collection.Add(new Class2()); 

    var results = new List<Class1>(); 

    foreach (var item in collection) 
    { 
     if (item.GetType().IsAssignableFrom(typeof(Class1))) 
     { 
      results.Add(item); 
     } 
    } 
} 

在上面的代码,结果集合只拥有Class1对象,而不是对象的两者。

+1

[IsAssignableFrom](https://msdn.microsoft.com/en-us/library/system.type.isassignablefrom%28v=vs.110%29.aspx )包含很多解释/样本......你仔细阅读过吗? –

你可以这样做:

public class Class1 
{ 

} 

public class Class2 : Class1 
{ 

} 

private void TestType() 
{ 
    var collection = new List<Class1>(); 
    collection.Add(new Class1()); 
    collection.Add(new Class2()); 

    var results = new List<Class1>(); 

    foreach (var item in collection) 
    { 
     Class1 c1 = (item as Class1); // Won't throw if not Class1 
     if (c1 != null) 
     { 
      results.Add(c1); 
     } 
    } 
}