C# 泛型:如何使用 nameof 获取基的名称 class 属性
C# Generics: How to use nameof to get the name of a base class property
我有如下继承层次结构:
public abstract class A
{
public string MyProperty {get; set;}
}
public class B : A
{
}
public class C : A
{
}
然后我有一个使用泛型的方法:
public void MyMethod<T>() where T : A
{
var str = nameof(T.MyProperty); // this one fails
}
我试图获取 MyProperty
的名称,但它失败了,因为我试图通过类型而不是对象来完成此操作。有没有一种无需传递对象即可获取 属性 名称的巧妙方法?
nameof(A.MyProperty)
.
无论如何,您将 T
限制为 A
。
另一种选择是创建 T
:
的“虚拟”实例
public void MyMethod<T>() where T : A
{
var t = default(T);
var str = nameof(t.MyProperty);
}
编译器似乎 smart enough 在发布配置中删除了这个虚拟实例。
我有如下继承层次结构:
public abstract class A
{
public string MyProperty {get; set;}
}
public class B : A
{
}
public class C : A
{
}
然后我有一个使用泛型的方法:
public void MyMethod<T>() where T : A
{
var str = nameof(T.MyProperty); // this one fails
}
我试图获取 MyProperty
的名称,但它失败了,因为我试图通过类型而不是对象来完成此操作。有没有一种无需传递对象即可获取 属性 名称的巧妙方法?
nameof(A.MyProperty)
.
无论如何,您将 T
限制为 A
。
另一种选择是创建 T
:
public void MyMethod<T>() where T : A
{
var t = default(T);
var str = nameof(t.MyProperty);
}
编译器似乎 smart enough 在发布配置中删除了这个虚拟实例。