簡體   English   中英

c#在運行時檢查兩個對象是否具有可比性

[英]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.

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