[英]c# check at runtime if two objects are comparable
我試圖理解反思的機制。 我想比較一個對象的屬性與給定的值。 現在,我希望能夠知道(當然在運行時)兩個對象是否具有可比性,而不是執行比較並捕獲異常。
就像是:
public bool IsComparableWithProperty(string propertyName, object value)
{
return typeof(MyType).GetProperty(propertyName).PropertyType is IComparable<value.GetType()>
}
當然我知道這是無效的,因為必須在編譯時知道泛型。 我想知道這種行為是否可以在C#中實現。
謝謝
您可以使用MakeGenericType
使用值運行時類型實例化通用接口定義,並使用IsAssignableFrom
檢查兼容性。
public bool IsComparableWithProperty(string propertyName, object value)
{
return typeof(IComparable<>).MakeGenericType(value.GetType()).IsAssignableFrom(typeof(MyType).GetProperty(propertyName).PropertyType);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.