私は、デリゲートマッチデリゲートFUNCための過負荷<T, T>
クラスの私のスキームといくつかの問題があります。
public interface IWorker<T> where T : IModel
{
T Do(T model);
T ReadyToWork(T model);
}
public abstract class Workers<T> : IWorker<T> where T : IModel
{
public abstract T Do(T model);
public abstract T ReadyToWork(T model);
}
クラスが動作するように! FirstModel : IModel
public class FirstWorker : Workers<ModelFirst>
{
public override ModelFirst Do(ModelFirst model)
{
return new ModelUserFirst();
}
public override ModelFirst ReadyToWork(ModelFirst model)
{
throw new NotImplementedException();
}
}
私は多くの仕事スペシャルクラスを作成することができ、それらで動作するように私は1つのアクセスポイントを作成:
public class WorkPoint<T> where T : IModel
{
public static Func<T, T> Do { get; set; }
public static Func<T, T> ReadyToWork{ get; set; }
public WorkPoint(ModelFirst mod)
{
Do = FirstWorker.Instance().Do;
ReadyToWork= FirstWorker.Instance().ReadyToWork;
}
}
OK
、と質問を。オン瞬間の割り当てDo
とReadyToWork
私はキャッチエラー エラーCS'Do'のオーバーロードはデリゲート 'Func'に一致しません 何が間違っていますか?
これらの状況では、何が起こっているのかを調べる最も簡単な方法は、存在しない変数に変数を割り当ててから、クイックアクションとリファクタリングを使用して変数を作成することです。変数の実際のシグネチャが表示され、一般的に何をしようとしていたのかが分かりません。 – Will
ここに[mcve]を指定すると、UserFirstWorkerやそのインスタンスメソッドが表示されません。しかし、もしそれが 'FirstWorker'かそれに類するものであれば、誰かが' WorkPoint 'を使った場合、どうなるでしょうか? –
これはあなたが共分散を使いたいと思うようです。 'Func'は第2の 'T '上でのみ共変であるが、第1のものでは反復的であり、' Do'メソッドは 'T'と正確に一致しなければならない。 –
juharr