有没有办法创建具有属性的接口,该接口必须由实现接口的类使用?
即。如果类Foo实现了接口IFoo,并且IFoo被定义为必须具有ObserveMeAttribute,那么Foo必须在其上定义ObserveMe才能实现IFoo。
编辑:
属性称为EntityTypeAttribute,用于指定视图模型的实体类型,用法为:
[EntityType(typeof(User))]
public class UserViewModel
{
...
}
属性用于扩展方法AddModel(T TModel),其中从TModel读取属性,并且它的属性Type entityType用于创建实体存根对象。
答案 0 :(得分:3)
简单的回答是“不”。如果每个对象必须具有此值来实现IFoo,为什么不将它作为IFoo接口的一部分?
属性主要是通过使用反射在运行时中查找有关类/方法/参数的其他声明性信息的机制。
答案 1 :(得分:0)
你做不到。但是,您可以通过使用Model类泛型参数使ViewModel类具有通用性来解决您的问题:
public abstract class Model
{
...
}
public abstract class ViewModel<TModel> where TModel : Model
{
...
}
在每个Model和ViewModel的抽象类中实现重复逻辑。然后你会有:
public class User : Model
{
...
}
public class UserViewModel : ViewModel<User>
{
...
}