【问题标题】:Attribute limitation to the specific class特定类的属性限制
【发布时间】:2015-01-24 22:28:24
【问题描述】:

我想知道是否有任何方法可以将自定义属性的使用限制为特定类。 我读过它,有人写道,这在 C# 中可能是不可能的。但是我刚刚尝试在一个不是从 Attribute 派生的类上使用 AttributeUsage 属性,并且 Visual Studio 抛出了以下错误:

属性“AttributeUsage”仅对派生自 System.Attribute 的类有效

所以现在我认为有一个非常聪明的方法来实现它。你有什么想法吗?

【问题讨论】:

  • 您是否希望在编译时显示该属性仅用于某些类的规则?如果您愿意接受在运行时首先检测到并记录违规行为,您可以通过反射来做到这一点。

标签: c#


【解决方案1】:

我能想到的唯一方法是让属性类成为目标的内部类。不过,我很难找到使用它的正当理由。

这将编译:

[InnerAttribute]
public class A 
{
    private class InnerAttribute : Attribute
    {

    }
}

但添加它不会:

[InnerAttribute]
public class B
{

}

【讨论】:

  • 这是个好主意,但如果可能的话,我正在寻找更紧凑的解决方案。
  • 哇...我在“编译时不可能”阵营...@vdrake6 “更紧凑”是什么意思?
猜你喜欢
  • 1970-01-01
  • 2012-10-18
  • 2014-12-26
  • 1970-01-01
  • 2011-08-07
  • 1970-01-01
  • 1970-01-01
  • 2020-03-17
  • 1970-01-01
相关资源
最近更新 更多