接口隐式转换的通用类型

时间:2012-04-11 21:01:07

标签: generics c#-4.0 interface type-conversion implicit

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

我有一位主要演讲者:

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

我这样做的方式不可能吗?有没有正确的方法来做到这一点?我注定了吗?谢谢!

0 个答案:

没有答案