我有以下课程
public abstract class Result<TResult, TData> where TResult : Result<TResult, TData>
{
public virtual TData Data { get; private set; }
}
如何在 Data 属性上使用 nameof?
它尝试了一些选项,但出现编译错误
nameof(Result<object, object>.Data)
Error CS0311
The type 'object' cannot be used as type parameter 'TResult' in the generic type or method
'Result<TResult, TData>'. There is no implicit reference conversion from 'object' to
'Result<object, object>'
更新 为了更好地指定:
我没有在第一个片段中编写类,但我必须按原样使用它。我需要使用反射来获取 Data 属性的 PropertyInfo 实例。我可以通过调用 GetProperty("Data") 来做到这一点,但我更喜欢避免使用字符串,以防使用 Visual Studio 重构重命名 name 属性(例如从数据到内容)。我不能使用 nameof(Data) 并且我处于不同的上下文中,不知道该类中的 Data 属性。
因此,我会调用 GetProperty(nameof({whatever}.Data))。当然,如果不可能,我会使用字符串。但如果有办法,我想知道。