SORU
5 HAZİRAN 2009, Cuma


C Nesnelerin Özelliklerini Bir Döngü#

Dont maçı hangi konular üzerinde ortak özellikleri döngü ve kullanıcılarını uyarmak istiyorum aynı türden iki nesne var.

Nesne ne içerdiğini bilmeden bunu yapmak mümkün mü?

Teşekkürler

CEVAP
5 HAZİRAN 2009, Cuma


Evet, yansıma - her emlak tipi uygun Equals uygular varsayarsak. Alternatif yinelemeli olarak ama bazı bilinen tüm türleri için ReflectiveEquals kullanmak olacaktır, ama bu biraz zor alır.

public bool ReflectiveEquals(object first, object second)
{
    if (first == null && second == null)
    {
        return true;
    }
    if (first == null || second == null)
    {
        return false;
    }
    Type firstType = first.GetType();
    if (second.GetType() != firstType)
    {
        return false; // Or throw an exception
    }
    // This will only use public properties. Is that enough?
    foreach (PropertyInfo propertyInfo in firstType.GetProperties())
    {
        if (propertyInfo.CanRead)
        {
            object firstValue = propertyInfo.GetValue(first, null);
            object secondValue = propertyInfo.GetValue(second, null);
            if (!object.Equals(firstValue, secondValue))
            {
                return false;
            }
        }
    }
    return true;
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • BiGSH0TROB

    BiGSH0TROB

    7 NİSAN 2011
  • ShayLoss

    ShayLoss

    5 Kasım 2009
  • TheScorpioTechno

    TheScorpioTe

    15 Aralık 2010