让我们说我有这个方法将字符串作为扩展参数:
private static List<string> ValidationErrors = new List<string>();
private static void ErrorCheck<T>(this string str)
{
if (string.IsNullOrEmpty(str))
{
// This just returns "str"
// Instead of property name (see "How I use" section")
ValidationErrors.Add(typeof(T).Namespace + "[" + nameof(str) + "]");
}
}
这就是我使用它的方式:
Car.Color.ErrorCheck<Car>();
Car对象的颜色只是字符串属性。所以我想要的是获得&#34; Color&#34;而不是&#34; str&#34;在我的扩展方法中。
我是如何实现这一目标的?
答案 0 :(得分:2)
不可能。 C#有几个选择:
nameof
nameof(Car.Color)
使用Expression<...>
和lambdas的表达式树。请参阅此帖子:Retrieving Property name from lambda expression