为啥我的 C# IS 语句不起作用?
Posted
技术标签:
【中文标题】为啥我的 C# IS 语句不起作用?【英文标题】:Why is my C# IS statement not working?为什么我的 C# IS 语句不起作用? 【发布时间】:2013-09-30 02:05:47 【问题描述】:我有以下代码,其中 T 是这样定义的泛型:
public abstract class RepositoryBase<T> where T : class, IDataModel
这段代码运行良好:
PropertyInfo propertyInfo = typeof(T).GetProperty(propertyName);
if (propertyInfo.DeclaringType.FullName == typeof(T).FullName) <--- Works just fine
vs 这段代码的结果为假
PropertyInfo propertyInfo = typeof(T).GetProperty(propertyName);
if (propertyInfo.DeclaringType is T) <-- does not work
我在这里做错了什么?
【问题讨论】:
youtube.com/watch?v=j4XT-l-_3y0 【参考方案1】:is 使用两个对象之间的类型比较。所以DeclaringType
是Type
类型,typeof(T)
是T
类型,它们不相等。
var aType = typeof(propertyInfo.DeclaringType);
var bType = typeof(T);
bool areEqual = aType is bType; // Always false, unless T is Type
【讨论】:
【参考方案2】:你要找的是
TypeIsAssignableFrom
if (propertyInfo.DeclaringType.IsAssignableFrom(typeof(T)))
【讨论】:
以上是关于为啥我的 C# IS 语句不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 Jquery Ajax 调用不起作用?(Asp.net MVC C#)
如何使用 C# 创建一个对象以统一在两个位置之间移动,为啥我的代码不起作用?