Projemde, özel ayarlayıcıları olan bazı özellikleri ayarlayabileceğimiz bazı birim testleri var.Bir özelliği lambda ifadesiyle nasıl geçebilirim?
public static void SetPrivateProperty(this object sourceObject, string propertyName, object propertyValue)
{
sourceObject.GetType().GetProperty(propertyName).SetValue(sourceObject, propertyValue, null);
}
Böyle bir TestObject vardı varsayarsak: şu şekildedir:
public class TestObject
{
public int TestProperty{ get; private set; }
}
o zaman benim birim testlerinde bu çağırabilirsiniz: Şu anda yansıma ve bu uzatma yöntemi ile yapıyorum
myTestObject.SetPrivateProperty("TestProperty", 1);
Ancak, derleme zamanında özellik adının geçerliliğini almak istiyorum ve bu nedenle, şu şekilde ifade yoluyla özelliği iletmek istiyorum:
myTestObject.SetPrivateProperty(o => o.TestProperty, 1);
Bunu nasıl yapabilirim?
lambda deyiminin amacı nedir? Derleme zamanı doğrulaması sağlamak için? – mellamokb
@mellamokb Evet. Bunu yapmak için başka bir yol varsa, ben oyunum. – Sterno
Bkz. Http://stackoverflow.com/questions/671968/retrieving-property-name-from-lambda-expression – phoog