インターフェイスが暗黙の演算子をサポートしていないことは知っていますが、幸いなことに私はそうしようとはしていません。しかし、それは近くにあり、それは私にエラーを与えています、そして私はこれを回避する賢い方法が何であるかわかりません...
私にはメインプレゼンターがいます:
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>'.
これは私がこれをしている方法では不可能ですか?これを行う適切な方法はありますか?私は運命にありますか?ありがとうございました!