首页 新闻 会员 周边 捐助

C#中怎么判断一个类是另外一个类的子类

0
悬赏园豆:40 [已解决问题] 解决于 2010-09-06 18:32

例如:

首先定义一个借口

interface IA{}

类CB继承自IA

class CB:IA{}

 

现在在一个测试方法中new了一个CB,怎么判断他是IA的实例?

class Test(){

  CB _cb = new CB();

  if(......){

    //print("_cb 继承自IA");

  }

}

 

我试过用IsSubclassOf 好像没用:bool t2 = _cb.IsSubclassOf(typeof(IA)); ---false

                                              bool t3 = typeof(IA).IsSubclassOf(_cb); ----false

问题补充: 就是类似于java中的 IA.class.isInstance(_cb);
月·漩涡的主页 月·漩涡 | 初学一级 | 园豆:96
提问于:2010-09-06 17:38
< >
分享
最佳答案
0

参考这里:http://space.cnblogs.com/question/4414/

我发现上个问题的悬赏分是800分,汗一个。

收获园豆:40
Astar | 高人七级 |园豆:40805 | 2010-09-06 18:21
行了,我怎么没找到这个答案呢,谢谢你了,虽然只有40分,但是你把他想象成800分好了。 嘿嘿 谢谢各位了
月·漩涡 | 园豆:96 (初学一级) | 2010-09-06 18:32
其他回答(3)
0

你可以用IsAssignableFrom试试
typeof(CB).IsAssignableFrom(typeof(IA))

ZhangPeng.Chen | 园豆:250 (菜鸟二级) | 2010-09-06 17:56
谢谢你的回答 确定当前的 Type 的实例是否可以从指定 Type 的实例分配。(不明白什么意思) bool t2 = _cb.GetType().IsAssignableFrom(typeof(IA)); bool t3 = typeof(IA).IsAssignableFrom(_cb.GetType()); 这两个返回的都是false; 好像这个方法没有用 - +
支持(0) 反对(0) 月·漩涡 | 园豆:96 (初学一级) | 2010-09-06 18:19
0

这个好像能用类的关系图的,直观的很!

Curitis | 园豆:215 (菜鸟二级) | 2010-09-10 13:26
??不明白
支持(0) 反对(0) 月·漩涡 | 园豆:96 (初学一级) | 2010-09-10 18:51
0

class Program
{
static void Main(string[] args)
{
B b = new B();
var type = Type.GetType(b.ToString());
Console.WriteLine(typeof(IA).IsAssignableFrom(type));
}

}
public interface IA
{
void Test();
}
public class B : IA
{
public void Test()
{
Console.WriteLine("hello world");
}
}

zzhi.wang | 园豆:5 (初学一级) | 2015-11-20 15:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册