我知道接口不支持隐式运算符,幸运的是我并没有尝试这样做。但它很接近,它给了我错误,而且我不确定这是一个聪明的方法......
我有一位主要演讲者:
public sealed class PersonPresenter : RecordPresenter<IPersonService,PersonOverview,PersonMailMergeSource>
拉出:
public abstract class RecordPresenter<T, K, U> : BasicRecordPresenter<K>
where T : IRecordService<K>
where K : IRecordInfo
where U : IMailMergeSource<K>, new()
问题是(而且我知道这很烦人,但我正在制作一个巨大的整体)是IPersonService实际上是:
public interface IPersonService: IRecordService<PersonInfo>
但那没关系。 PersonOverview里面有PersonInfo作为PersonOverview.Person,所以我在PersonOverview中创建了这个方便的转换:
public static implicit operator PersonInfo(PersonOverview rhs)
{
return rhs.Person;
}
但是回到PersonPresenter会引发这个错误:
The type 'IPersonService' must be convertible to 'IRecordService<PersonOverview>' in order to use it as a parameter 'T' in the generic class 'RecordPresenter<T,K,U>'.
我这样做的方式不可能吗?有没有正确的方法来做到这一点?我注定了吗?谢谢!