要检查类型是否是C#中另一种类型的子类,很容易:
typeof (SubClass).IsSubclassOf(typeof (BaseClass)); // returns true
Run Code Online (Sandbox Code Playgroud)
但是,这将失败:
typeof (BaseClass).IsSubclassOf(typeof (BaseClass)); // returns false
Run Code Online (Sandbox Code Playgroud)
有没有办法检查类型是否是基类本身的子类OR,而不使用OR运算符或使用扩展方法?
我的项目中有一个派生类的泛型类.
public class GenericClass<T> : GenericInterface<T>
{
}
public class Test : GenericClass<SomeType>
{
}
Run Code Online (Sandbox Code Playgroud)
有没有办法找出一个Type对象是否来自GenericClass?
t.IsSubclassOf(typeof(GenericClass<>))
Run Code Online (Sandbox Code Playgroud)
不起作用.
有什么方法可以确定一个对象是否完全是一个类而不是派生的一个类?
例如:
class A : X { }
class B : A { }
Run Code Online (Sandbox Code Playgroud)
我可以这样做:
bool isExactlyA(X obj)
{
return (obj is A) && !(obj is B);
}
Run Code Online (Sandbox Code Playgroud)
当然,如果有更多的派生类A我必须添加和条件.
如何创建一个字典来存储继承另一个类的值作为值?
例如:
Dictionary<String, typeof(Parent)> dict = new Dictionary<string, typeof(Parent)>();
dict["key1"] = typeof(Child1);
dict["key2"] = typeof(Child2);
dict["key3"] = typeof(Child3);
public abstract class Parent { }
public class Child1 : Parent { }
public class Child2 : Parent { }
public class Child3 : Parent { }
Run Code Online (Sandbox Code Playgroud)
我不想存储实例,而是存储类类型.
编辑:对不起我对我想要做的事情的错误解释.我正在寻找一种存储类型的方法,并确保此类型继承父类.我希望是类型安全的,并确保商店类型是Parent的子类.唯一的办法,就是现在,我想到如何做到这一点就是在这里创建我自己的IDictionary实现.但这不是我想要的.我想这样做
Dictionary<string, typeof(Parent)> dict = ...
Run Code Online (Sandbox Code Playgroud)
任何的想法?
我有:
class A
class B : A
class C : B
class D : B
我有一个清单
C和D的实际对象存储在哪里。
如何检查List中的对象是否是B的子类型?
目前,我正在做item.GetType() == typeof(C) || item.GetType() == typeof(D)
这可行,但是如果我有两个以上从 B 继承的类怎么办?把它们全部写下来似乎是多余的。有没有办法检查该对象是否是 B 的子类型?谢谢!
var type1 = typeof (ClassA);
var type2 = typeof (ClassB);
Run Code Online (Sandbox Code Playgroud)
是type2源于type1?
bool isDerived = // code....
Run Code Online (Sandbox Code Playgroud)