0

我知道接口不支持隐式运算​​符,幸运的是我没有尝试这样做。但它很接近,它给了我错误,我不确定解决这个问题的聪明方法是什么......

我有一个主讲者:

    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>'.

我这样做是不可能的吗?有没有合适的方法来做到这一点?我注定要失败吗?谢谢!

4

0 回答 0