6

有没有办法创建具有实现接口的类必须使用的属性的接口?

即如果类 Foo 实现了接口 IFoo,并且 IFoo 被定义为必须具有 ObserveMeAttribute,那么 Foo 必须在其上定义 ObserveMe 才能实现 IFoo。

编辑:

属性称为EntityTypeAttribute,用于为视图模型指定实体类型,用法:

[EntityType(typeof(User))]
public class UserViewModel
{
...
}

属性用于扩展方法 AddModel(T TModel) 中,其中属性是从 TModel 读取的,它的属性类型 entityType 用于创建实体存根对象。

4

2 回答 2

2

简单的答案是“不”。如果每个对象都必须有这个值来实现 IFoo 为什么不让它成为 IFoo 接口的一部分呢?

属性主要是一种通过使用反射在运行时查找有关类/方法/参数的附加声明性信息的机制。

于 2012-11-06T17:08:58.963 回答
0

你不能这样做。但是您可以通过使用 Model 类泛型参数使 ViewModel 类泛型来解决您的问题:

public abstract class Model
{
...
}

public abstract class ViewModel<TModel> where TModel : Model
{
...
}

并在这个抽象类中为每个模型和视图模型实现你的重复逻辑。然后你将拥有:

public class User : Model
{
...
}

public class UserViewModel : ViewModel<User>
{
...
}
于 2017-05-04T16:21:02.953 回答