gpt4 book ai didi

c#-4.0 - 使用动态操作比较对象属性

转载 作者:行者123 更新时间:2023-12-01 04:15:54 25 4
gpt4 key购买 nike

我有 2 个对象类型的变量,需要使用基于枚举的动态操作进行比较:

public enum OperationType
{
None,
EqualTo,
NotEqualTo,
GreaterThan,
GreaterThanOrEqualTo,
LessThan,
LessThanOrEqualTo
}

您可以假设变量的基础类型相同,只能是字符串类型或任何其他值类型,但在开发期间是未知的。

我目前有以下几点:
 bool match;
switch (Operation)
{
case OperationType.EqualTo:
match = Equals(targetValue, valueToMatch);
break;
case OperationType.NotEqualTo:
match = Equals(targetValue, valueToMatch) == false;
break;
case OperationType.GreaterThan:
//??
break;
case OperationType.GreaterThanOrEqualTo:
//??
break;
case OperationType.LessThan:
//??
break;
case OperationType.LessThanOrEqualTo:
//??
break;
default:
throw new ArgumentOutOfRangeException();
}

在运行时确定匹配的最佳方法是什么 (C# 4.0)?

最佳答案

你在泛型方法中有这个,还是可以把它放在泛型方法中?如果是这样,则相对容易:使用 EqualityComparer<T>.Default对于相等比较,和 Comparer<T>.Default用于大于/小于比较(例如,使用 < 0<= 0 表示小于与小于或等于)。

如果您不能以通用方式直接调用它,则可以使用 C# 4 的动态类型来为您执行此操作:

private static bool CompareImpl<T>(T value1, T value2, OperationType operation)
{
// Stuff using generics
}

public static bool Compare(dynamic value1, dynamic value2,
OperationType operation)
{
return CompareImpl(value1, value2, operation);
}

在执行时,这将计算出用于 CompareImpl 的正确类型参数。 .

关于c#-4.0 - 使用动态操作比较对象属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3864103/

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