[英]Why is my C# IS statement not working?
我有以下代碼,其中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這個評估為false的代碼
PropertyInfo propertyInfo = typeof(T).GetProperty(propertyName);
if (propertyInfo.DeclaringType is T) <-- does not work
我在這做錯了什么?
是在兩個對象之間使用類型比較。 因此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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.