C# 自定义类型上的属性以期望使用其他属性标记的方法
我正试图在一个类型上创建一个自定义属性,该属性期望该类型中的某些属性被标记为另一个属性,类似于在中使用C# 自定义类型上的属性以期望使用其他属性标记的方法,c#,attributes,C#,Attributes,我正试图在一个类型上创建一个自定义属性,该属性期望该类型中的某些属性被标记为另一个属性,类似于在中使用ServiceContract所做的操作: [服务合同] 公共接口ITestServiceContract { [经营合同] 无效操作(); } 如果ServiceContract中没有方法标记有OperationContract属性,则显示以下警告: 接口“ITestServiceContract”标记为ServiceContract,但不包含任何操作契约 查看ServiceContract
ServiceContract
所做的操作:
[服务合同]
公共接口ITestServiceContract
{
[经营合同]
无效操作();
}
如果ServiceContract
中没有方法标记有OperationContract
属性,则显示以下警告:
接口“ITestServiceContract”标记为ServiceContract,但不包含任何操作契约
查看ServiceContract
的定义时,我看不出这将在何处定义:
[AttributeUsage(ServiceModelAttributeTargets.ServiceContract,Inherited=false,AllowMultiple=false)]
公共密封类ServiceContractAttribute:属性
{
...
}
ServiceModelAttributeTargets.ServiceContract
是外部定义的:
public const AttributeTargets ServiceContract=AttributeTargets.Interface | AttributeTargets.Class;
我有没有办法定义这样的属性?您通常不会在属性本身中定义这种逻辑。该属性通常只是“位于”那里并包含一些数据。稍后检索属性时,将评估此类约束
发出一条警告消息,当不满足此类约束时,您可以实现一个自定义分析器,您将随附该分析器。您可以开始学习如何实现这样的分析器。是的,这很有意义。谢谢你给我指出定制的roslyn分析仪,我想这就是我要尝试的。