【发布时间】:2017-03-03 04:56:25
【问题描述】:
我是 C# 的新手,我尽我所能找到一个与我类似的已经回答的问题,但我就是找不到与我的问题相关的答案。
所以, 我有一个“实例”类,它应该是所有游戏对象的超类。 它有一个只读的 ClassName 属性,定义如下:
public string ClassName
{
get
{
return this.GetType().Name;
}
}
我提出这个问题的原因是,如果当前对象是 className 的实例,或者对象的类继承自 className,我希望使用以下方法返回 true。
public bool IsA(string className)
{
//TODO
}
这需要某种“递归”,以便如果情况是: X : Class1 : Class2: Class4 那么 X.IsA(Class4) 将返回 true
我已经研究过 object.GetType() 之类的方法,但我还没有找到解决方案。
有什么想法吗?
【问题讨论】:
-
这需要是“递归”的,这样如果情况是: X : Class1 : Class2: Class4 那么 X.IsA(Class4) 将返回 true
-
取自重复线程中接受的答案:如果实例在 继承树中,
is返回true。 相关文档:is (C# Reference). -
是的,我也刚读过,但一个问题仍然存在,我的参数是字符串而不是类
-
如果您在此处使用字符串,您将进入危险水域。你确定你被字符串卡住了吗?如果您向我们展示字符串的来源,我们可能会提出更简洁的替代方案。
-
gist.github.com/Elmuti/e09b066207eef0b551f0df6f56ce48f4 我是根据链接的副本写的,但我不确定这是否可行
标签: c# oop inheritance multiple-inheritance