C# 生成多属性?

C# 生成多属性?,c#,attributes,custom-attributes,C#,Attributes,Custom Attributes,我无法想象这将如何运作。我相信这是可以做到的。我注意到我的属性中使用了一个模式,我总是同时使用3个特定属性。以下面的例子为例 [MyAttr(4, @"a"), MyAttr(41, "b"), MyAttr(45, "ab")] 我的要复杂得多,但我想定义一个具有更多参数的属性来生成上面的数据。我该怎么做?假设我的一个属性如下所示 MyAttr2(4, 41, "a", "b"); //4+41=45, "a"+"b" = "ab" 如何生成3 MyAttr以应

我无法想象这将如何运作。我相信这是可以做到的。我注意到我的属性中使用了一个模式,我总是同时使用3个特定属性。以下面的例子为例

    [MyAttr(4, @"a"),
     MyAttr(41, "b"),
     MyAttr(45, "ab")]
我的要复杂得多,但我想定义一个具有更多参数的属性来生成上面的数据。我该怎么做?假设我的一个属性如下所示

MyAttr2(4, 41, "a", "b"); //4+41=45, "a"+"b" = "ab"

如何生成3 MyAttr以应用于使用MyAttr2的类?

C#编译器无法将程序集元数据中的单个属性项转换为多个属性项。但是,您可以对属性进行建模,使其将其他属性信息作为属性(或集合)公开。然而,子信息将无法作为独立属性通过反射直接访问。

您是指具有不同构造函数的同一属性吗?不,我的意思是代码将查看MyAttr,有3条不同的指令,我希望生成3条指令,而不添加逻辑来检查MyAttr2并复制3条指令。因此,基本上,您希望访问一个“MyAttr2”属性,该属性将传播同一类型上“MyAttr”属性中的所有值?如果是这样的话,你能把“MyAtt2”作为任何“MyAtt”属性之上的门面吗?马文·斯密特:我想我可以,但是怎么做呢?嗯,那么我需要修改MyAttr的代码逻辑吗?或者我可以不去管它,按照你的建议去做,因为子信息不能直接访问。如果你通过一些集合/属性公开单个属性的细节部分,那么你需要更改现有代码。如果没有关于您正在做什么以及在多少情况下可以合并多个属性的更多细节,很难说哪种设计更适合您的需要。然而,子属性方法将是一个突破性的变化。