c# - 将属性限制为属性类型
问题描述
使用AttributeUsage
属性,我可以将属性的有效目标限制为某些实体类型(类、属性等)。但是,如何进一步限制它,使其只能应用于某种类型的属性?
例如:
[MyAttribute] // Valid
public Foo Item { get; set; }
[MyAttribute] // Compilation error: "Attribute 'MyAttribute' is only valid on classes derived from Foo"
public int Value { get; set; }
我很确定这应该是可行的,因为AttributeUsage
如果我们尝试将属性应用于非派生自的类,属性本身就有这个限制Attribute
:
[AttributeUsage(AttributeTargets.Property)] // Attribute 'AttributeUsage' is only valid on classes derived from System.Attribute
public class Bar { }
解决方案
在另行通知之前,正如@thehennyy 指出的那样,我担心的答案是,它不适用于自定义属性,而是由编译器对 AttributeUsage 属性强制执行。
推荐阅读
- javascript - React 生产构建样式在刷新时未加载
- html - 单独覆盖 CSS 网格模板列
- python - 运行 Salt minion 指定 Python 路径
- java - 我可以用c#更改as400数据区吗
- javascript - 两个变量在 Node.js 中使用 require(参考问题)引用同一个 config.js 文件
- c - C:使用 strcpy 将字符串分配给结构数组导致的段错误
- javascript - 使用另一个模块的 id 从 nuxt vuex 模块获取值
- angular - 试图在路由解析器Angular中获取数据的特定部分
- cypress - 使用 cypress 如何检查背景图像是否已加载?
- node.js - 使用'like'和'concat'的Node js Mongoose查询