您能否指定如何解析属性中的参数?

问题描述 投票:1回答:1

如果我有这样的课程:

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')。如果我重命名了属性,则它将解析为该类,并且可以正常工作。

是否可以指定我希望它解析为该类而不必重命名该属性?

c# .net
1个回答
2
投票

[目前,我找不到在属性“隐藏”同名类的重复项,但是假设问题中的代码是在名为namespaceMyNamespace中定义的,则只需指定物业的fully-qualified name ...

[MyAttribute(nameof(MyNamespace.ClassA.MyProperty))]
public void MyMethod()
{
}
© www.soinside.com 2019 - 2024. All rights reserved.