のは、私がなどのインターフェースIAutoTask
、そのインターフェイスを実装するいくつかの他のクラス、RegularTextAnswerTask
、SelectAnswerTask
、JoinPairsTask
を持っているとしましょうこれらの各クラスには、int型を返すEvaluateAnswer
方法を定義して - しかし、メソッドのパラメータが異なります。ジェネリックを使用して特定の設計問題を解決する:この場合は正しい?
public sealed class SelectAnswerTask : IAutoTask
{
public int EvaluateAnswer(int[] answer);
}
public sealed class RegularTextAnswerTask : IAutoTask
{
public int EvaluateAnswer(string answer);
}
public sealed class JoinPairsTask : IAutoTask
{
public int EvaluateAnswer(int[,] answer);
}
ここで、インターフェイスの定義はどのようになっていますか?私が思い付いた:
public interface IAutoTask<AnswerType>
{
int EvaluateAnswer(AnswerType answer);
}
、次のように実装を変更する:
public sealed class SelectAnswerTask : IAutoTask<int[]>
{
public void EvaluateAnswer(int[] answer)
{
}
}
など
あなたは、このアプローチが正しいものであると考えていますか?
少なくとも二つのことは不明である - そして、なぜあなたはそれをevalueting大会(サフィックスの種類を使用する理由、これが答えのメタタイプである名前を付けます? 、回答のタイプを評価する方法)。そして2番目のことは、そこに抽象クラスが必要な理由は不明です。 –
AnswerTypeの代わりに実際の型が渡されることは私の理解です。 (それはTと呼ぶのと同じですか、間違っていますか?)もちろん、抽象クラスは今のところ空ではありませんが、私の設計の一部であり、近い将来重要性を増します。 – David
私は問題の説明を理解していませんでした... –