我知道接口不支持隐式运算符,幸运的是我没有尝试这样做。但它很接近,它给了我错误,我不确定解决这个问题的聪明方法是什么......
我有一个主讲者:
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>'.
我这样做是不可能的吗?有没有合适的方法来做到这一点?我注定要失败吗?谢谢!