C# 比较两个属性并根据结果设置属性
我有以下课程:C# 比较两个属性并根据结果设置属性,c#,linq,reflection,C#,Linq,Reflection,我有以下课程: public class CompareField<T> { public CompareField() { Status = FieldStatus.NoChange; } public CompareField(T value) { Value = value; Status = FieldStatus.NoChange; } public T Value
public class CompareField<T>
{
public CompareField()
{
Status = FieldStatus.NoChange;
}
public CompareField(T value)
{
Value = value;
Status = FieldStatus.NoChange;
}
public T Value { get; set; }
public FieldStatus Status { get; set; }
public bool Equals(T objectValue)
{
if (!Equals(Value, default(T)) || !Equals(objectValue, default(T))) return false;
return Value.Equals(objectValue);
}
}
public enum FieldStatus
{
NoChange = 0,
HasChanges = 1
}
您要设置什么属性?如果没有泛型和反射,您将如何手工编写代码,以便我们了解您的意思?另外:
EqualityComparer.Default.Equals(…)
将是比Equals(x,y)
更好的选择,特别是如果T
可以是值类型(int
等)。比较列表要复杂得多,因为您会遇到如下问题:相同的逻辑值以不同的顺序排列;删除第2项和第3项;如何匹配1==1,2==4,3==5,等等-坦率地说,这对于比较list@Grundy来说真的很难做到,谢谢,这会派上用场的@马歇尔一世又加了一句example@Team-JoKi您可以为自定义类实现接口,并简单调用Equals
if (!modelA.FirstName.Value.Equals(modelB.FirstName.Value))
modelA.FirstName.Status = FieldStatus.HasChanges