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.PersonとしてPersonInfoが含まれているため、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