相关疑难解决方法(0)

如何检查类型是子类型还是对象类型?

要检查类型是否是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运算符或使用扩展方法?

c# reflection types subclass

322
推荐指数
3
解决办法
16万
查看次数

检查类是否派生自泛型类

我的项目中有一个派生类的泛型类.

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)

不起作用.

c# generics reflection

287
推荐指数
11
解决办法
14万
查看次数

如何检查一个对象是否*正好*一个类,而不是一个派生的类?

有什么方法可以确定一个对象是否完全是一个类而不是派生的一个类?

例如:

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我必须添加条件.

c# inheritance

4
推荐指数
2
解决办法
1517
查看次数

如何创建Dictionary来存储子类的类型

如何创建一个字典来存储继承另一个类的值作为值?

例如:

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)

任何的想法?

c# inheritance dictionary

3
推荐指数
1
解决办法
3013
查看次数

检查对象的实际类型

我有:

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 的子类型?谢谢!

c#

2
推荐指数
1
解决办法
9139
查看次数

1
推荐指数
1
解决办法
767
查看次数

标签 统计

c# ×6

inheritance ×2

reflection ×2

dictionary ×1

generics ×1

subclass ×1

types ×1