gpt4 book ai didi

c# 在运行时检查两个对象是否可比较

转载 作者:太空宇宙 更新时间:2023-11-03 22:54:38 25 4
gpt4 key购买 nike

我正在尝试了解反射机制。我想将对象的属性与给定值进行比较。现在,我不想执行比较并捕获异常,而是希望能够知道(当然是在运行时)这两个对象是否具有可比性。

类似于:

public bool IsComparableWithProperty(string propertyName, object value)
{
return typeof(MyType).GetProperty(propertyName).PropertyType is IComparable<value.GetType()>
}

当然我知道这是无效的,因为必须在编译时知道泛型。我想知道是否可以在 C# 中实现这种行为。

谢谢

最佳答案

您可以使用 MakeGenericType 实例化具有值运行时类型的通用接口(interface)定义,并使用 IsAssignableFrom 检查兼容性。

public bool IsComparableWithProperty(string propertyName, object value)
{
return typeof(IComparable<>).MakeGenericType(value.GetType()).IsAssignableFrom(typeof(MyType).GetProperty(propertyName).PropertyType);
}

关于c# 在运行时检查两个对象是否可比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45985364/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com