जिस समस्या को मैं हल करने का प्रयास कर रहा हूं वह है कि एक विधि को एक स्ट्रिंग के रूप में एक संपत्ति नाम में कैसे लेना है, और कहा गया संपत्ति को आवंटित मान देता है।सी # संपत्ति के नाम से गतिशील रूप से संपत्ति मूल्यों तक पहुंच
मेरे मॉडल वर्ग के समान घोषित किया जाता है:
public class Foo
{
public int FooId
public int param1
public double param2
}
और मेरे विधि के भीतर से मैं इस तरह के भाव का उपयोग करके इस
var property = GetProperty("param1)
var property2 = GetProperty("param2")
मैं वर्तमान में यह करने के लिए कोशिश कर रहा हूँ करने के लिए कुछ इसी तरह करना चाहते हैं
public dynamic GetProperty(string _propertyName)
{
var currentVariables = m_context.Foo.OrderByDescending(x => x.FooId).FirstOrDefault();
var parameter = Expression.Parameter(typeof(Foo), "Foo");
var property = Expression.Property(parameter, _propertyName);
var lambda = Expression.Lambda<Func<GlobalVariableSet, bool>>(parameter);
}
क्या यह दृष्टिकोण सही है, और यदि हां, तो क्या यह वापस लौटना संभव है एक गतिशील प्रकार के रूप में है?
उत्तर सही थे, यह अब तक बहुत जटिल बना रहा था। समाधान अब है:
public dynamic GetProperty(string _propertyName)
{
var currentVariables = m_context.Foo.OrderByDescending(g => g.FooId).FirstOrDefault();
return currentVariables.GetType().GetProperty(_propertyName).GetValue(currentVariables, null);
}
आप किसी विशेष प्रकार से किसी संपत्ति के मूल्य को देखने के लिए System.Reflection.PropertyInfo का उपयोग कर सकते हैं। http://msdn.microsoft.com/en-us/library/system.reflection.propertyinfo.aspx – Chris