是否可以将属性使用限制为仅限某些接口?

Pro*_*ofK 4 .net css c# custom-attributes

假设我有一个接口IAppModule,由几个类实现.是否可以编写一个只能应用于公开的类型的自定义属性IAppModule?如果是这样,怎么样?

dca*_*tro 9

不,不幸的是,这是不可能的.

但是,您可以在使用反射处理属性时检查修饰类型是否是实现IAppModule接口的类.

typeof(someType).GetInterfaces().Contains(typeof(IAppModule))

它不会阻止属性的用户错误地使用它(在任何其他类中),但如果您决定采用这种方法,我建议提供非常清晰的文档,描述如何使用该属性并添加图层验证我上面提到过.