Referans veya değer türlerini kabul edebilen ve yalnızca bir eşitlik testine dayalı bir eylem gerçekleştirebilen tek bir genel sınıf istiyorum. Aşağıdaki düşünün: Ben başvuru türü eşitlik vs değer türü eşitliğini test edebilmek için jenerik kısıtlamaları ve iki sınıfları kullanmak yaşıyorumGenel kısıtlamalar: Referans veya değer türü olabilen Genel Eşitliği test edebilir miyim?
public class Property<TProp>
where TProp : struct, IEquatable<TProp>
{
public TProp Value;
public void SetValue(ObservableObject owner, TProp value)
{
if (!Value.Equals(value)) // cannot use != on struct constrained TProp
{
// ... set the property
}
}
}
public class ByRefProperty<TProp>
where TProp : class // Dont want to require IEquatable<> on reference type TProp
{
public TProp Value;
public void SetValue(ObservableObject owner, TProp value)
{
if (Value != value)
{
// ... set the property
}
}
}
. Bunun etrafında herhangi bir yolu var, böylece sadece bir sınıfla sonuçlanabilir miyim?
Özellikle boks değeri değerlerini, yansıma veya çalışma zamanı IL neslini kullanarak içeren bir çözüm istemiyorum. Burada özlediğim basit bir çözüm var mı?
Bu, "IEquatable" öğesinin uygulanmasında tanımlanan herhangi bir özel Eşitleme mantığı kullanacak mı? –
@Justin, evet, eğer tür bunu uygularsa yapar. –
@Jon - Her gün yeni bir şeyler öğrenin ... tekrar. –