我希望有一个接口指定该接口的任何实现必须在其方法声明中使用特定接口的子类型:
interface IModel {} // The original type
interface IMapper {
void Create(IModel model); // The interface method
}
所以现在我希望我对此接口的实现不希望IModel
本身,而是IModel
的子类型:
public class Customer : IModel {} // My subtype
public class CustomerMapper : IMapper {
public void Create(Customer customer) {} // Implementation using the subtype
}
目前我收到以下错误:
'CustomerMapper'未实现接口成员'IMapper.Create(IModel)'
有没有办法实现这个目标?
答案 0 :(得分:5)
您需要使用您应该期望的值类型使您的界面具有通用性:
interface IMapper<T> where T : IModel
{
void Create(T model);
}
...
public class CustomerMapper : IMapper<Customer>
{
public void Create(Customer model) {}
}
如果你不把它变成通用的,任何只知道界面的东西都不知道哪种模型是有效的。