c# - 泛型参数的属性有什么用?

标签 c# .net generics attributes

将属性放在类或方法的通用参数上是有效的(即编译和运行):

public class MyClass<[My] T>
{
    private void MyMethod<[My] T>()
    {}
}

public class MyAttribute : Attribute
{}

我从未见过这种用法,并且正在努力想出您为什么想要这样做的原因。

这只是语言规范的一个怪癖/副作用,还是有正当/有用的理由将属性放在这个位置?

最佳答案

出于同样的原因,属性对任何构造都是有用的;它们提供元数据,反射或其他后处理器可以使用这些元数据来做各种事情。例如,您可能有一个 AOP 系统,它使用类型参数上的属性来应用某些否则无法表达的运行时约束。我不确定是否有任何系统实际使用这些属性来做任何事情,但没有理由禁止它们作为元数据。

关于c# - 泛型参数的属性有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4854686/

相关文章:

c# - 在 .NET Core Worker Service 中执行健康检查

c# - C# 中的 GC.Collect 和多线程

c# - .NET 中是否有任何类型的 "ReferenceComparer"?

.net - fortify 软件与 Visual Studio 2012 兼容吗?

generics - 为什么我不能在通用枚举类上调用 .values() ?

c# - 如何获取 Windows 8 Live ID

c# - 使用 XmlDocument 转义换行符

c# - 使用代码优先模型的 "Composable"全文搜索

generics - 当我在 Haskell 中编写 "show"和 "read"时发生了什么?

java - 使用和声明泛型 List<T>