有没有办法(在 c# .Net 4.0 中)以强类型方式提供对象属性名称? 例如,如果我们有一个对象 Person
Public class Person{
public string Name { get; set; }
public int Age { get; set; }
}
我想将参数名称、年龄属性名称发送到其他方法,但不是字符串而是强类型:
SomeMethodThatWantToKnowKeys(Person.Name,Person.Age);
我想要实现的是,如果有人更改属性名称,他将不得不更改他发送到“SomeMethodThatWantToKnowKeys”的属性名称。 也许反射(reflection)? 更好的方法是不更新对象本身或创建它的实例。
最佳答案
如果我明白你想要什么,你可以使用 expressions :
void SomeMethod<T>(Expression<Func<T>> expr)
{
var memberExpr = expr.Body as MemberExpression;
Console.WriteLine("{0}: {1}", memberExpr.Member.Name, expr.Compile()());
}
var person = new { Name = "John Doe", Age = 10 };
SomeMethod(() => person.Name); // prints "Name: John Doe"
SomeMethod(() => person.Age); // prints "Age: 10"
关于c# - 以强类型方式使用对象的属性名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19966167/