如果我有这样的课程:
public class ClassA
{
public string MyProperty {get; set;}
}
public class ClassB
{
public ClassA ClassA {get; set;}
[MyAttribute(nameof(ClassA.MyProperty))]
public void MyMethod()
{
}
}
public sealed class MyAttribute : Attribute
{
public string MyProperty {get; private set;}
public MyAttribute(string myProperty)
{
MyProperty = myProperty;
}
}
然后ClassA
中的[MyAttribute(nameof(ClassA.MyProperty))]
被解析为属性,而不是类,导致编译时错误(An object reference is required for a non-static field, method or property 'ClassB.ClassA'
)。如果我重命名了属性,则它将解析为该类,并且可以正常工作。
是否可以指定我希望它解析为该类而不必重命名该属性?
[目前,我找不到在属性“隐藏”同名类的重复项,但是假设问题中的代码是在名为namespace
的MyNamespace
中定义的,则只需指定物业的fully-qualified name ...
[MyAttribute(nameof(MyNamespace.ClassA.MyProperty))]
public void MyMethod()
{
}