c# - 使用在运行时定义类型的 'is'

标签 c# casting

谁能帮帮我?我不知道我做错了什么,但似乎会有一个简单的解决方案:

通常你可以像这样使用is:

if (theObject is MyClass) ...

但是如果你想指定它在运行时检查的类型,这不会编译

Type theType = ...
if (theObject is theType) ...

我试过这样做:

if (theObject.GetType() == theType) ...

但这只有在 theType 是那个确切的类型并且没有像 is 语句那样考虑继承的情况下才有效

我确信存在一个解决方案(可能使用泛型)但我现在想不出一个(它是那种你在点击“发布”的那一刻突然想起如何做的事情)

最佳答案

听起来你想要IsAssignableFrom() ,如

if (theType.IsAssignableFrom(theObject.GetType())) ...

关于c# - 使用在运行时定义类型的 'is',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3496328/

相关文章:

c# - 大数据上的 GZipStream

c++ - 如果没有打开 RTTI,C++ 中的 dynamic_cast 将无法工作;为什么?

c++ - 为什么以下 `std::transform` 示例需要函数指针而不是函数对象?

c# - 如何将roleclaim包含到accesstoken中?

c# - System.Console.WriteLine 在单元测试中不显示输出

c# - 聚焦输入时 DropDownList 的宽度变化

c# - 在类中打包事件参数,为什么?

php - 将数字字符串转换为浮点型数据

linq - 类型转换和Linq Cast <T>()

java - 无法将 java.lang.Integer 转换为 int