簡體   English   中英

為什么我的C#IS語句不起作用?

[英]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的類型為Typetypeof(T)的類型為T ,它們不相等。

var aType = typeof(propertyInfo.DeclaringType);
var bType = typeof(T);
bool areEqual = aType is bType; // Always false, unless T is Type

你在尋找什么

TypeIsAssignableFrom

if (propertyInfo.DeclaringType.IsAssignableFrom(typeof(T)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM