首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >允许依赖于AttributeUsage的属性构造函数

允许依赖于AttributeUsage的属性构造函数
EN

Stack Overflow用户
提问于 2019-02-07 17:55:19
回答 1查看 54关注 0票数 1

我有一个可以应用于类或属性的属性。这个类有两个构造函数。一个接受类型,一个接受类型和字符串。

代码语言:javascript
复制
 [AttributeUsage(
        AttributeTargets.Property | 
        AttributeTargets.Class, 
        AllowMultiple = true)]    
class DcProxyAttribute : Attribute{
     public DcProxyAttribute(Type type){ /*...*/ }
     public DcProxyAttribute(Type type, string str){ /*...*/ }
}

我可以像这样使用它

代码语言:javascript
复制
   [DcProxy(typeof(SomeType)]
   class MyClass {
       [DcProxy(typeof(SomeType, "Hello World")] 
       public string SomeProperty { get; set;}
   }

我想把它限制在这种用法上。只有这样使用它才有意义。

以下用法现在被认为是有效的,但它们不应该是有效的。

代码语言:javascript
复制
   [DcProxy(typeof(SomeType, "Hello world")]
   class MyClass {
       [DcProxy(typeof(SomeType)] 
       public string SomeProperty { get; set;}
   }

这可以做到吗?

我可以为它创建两个单独的类。一个DcProxyForClass和一个DcProxyForProperty。并像这样使用它

代码语言:javascript
复制
  [DcProxyForClass(typeof(SomeType)]
  class MyClass {
       [DcProxyForProperty(typeof(SomeType, "Hello World")] 
       public string SomeProperty { get; set;}
  }

但这会降低代码的可读性,因为从语义上讲,它们做的也是一样的。

EN

回答 1

Stack Overflow用户

发布于 2019-02-07 18:33:58

不,基本上你不能这么做。

选项:

  1. 使用它,如果使用了错误的重载,则在运行时引发异常
  2. 有两个单独的属性,每个属性一个(正如您已经建议的)-假设使用一个通用的基类型属性
  3. 使用它,但是编写一个代码分析器(Roslyn等)来检测场景并在集成开发环境/构建(假设与“1”组合)

中标记它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54570611

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档