代码之家  ›  专栏  ›  技术社区  ›  MatteS

以编程方式向方法或参数添加属性

  •  14
  • MatteS  · 技术社区  · 15 年前

    我可以在运行时使用typescriptor.addattributes向类型添加属性。如何对方法和参数执行相同的操作?(可能有两个独立的问题…)

    2 回复  |  直到 12 年前
        1
  •  17
  •   Marc Gravell    15 年前

    TypeDescriptor.AddAttributes 只影响 非常 特定用例;即从内部 System.ComponentModel . 对于 休息 它知道,它是反射的。 没有什么 关于额外属性。事实上, 系统组件模型 不适用于方法或参数。

    简而言之,您不能这样做。您需要将这些信息存储在其他地方(定制),或者在编译时添加它。

        2
  •  0
  •   Kerido    15 年前

    正如我从分析 TypeDescriptor 反射镜类 .AddAttributes 方法内部调用 .AddProvider 方法。这个 TypeDescriptionProvider 传递给它的实例实际上负责提供元数据。您可以尝试将[typescriptionProviderAttribute]属性添加到类中,并通过从 类型说明提供程序 班级。如文件所述,通过覆盖 TypeDescriptionProvider.CreateInstance ,可以提供类型具有所有必要属性的替代对象。我怀疑应用于替换类型内的方法的属性也会生效。但是,我自己还没有尝试过,所以可以随意尝试…