0
特定の種類のオブジェクトにDiff
機能を追加する必要があります。私は、同じタイプの他の人と自分自身を比較できるオブジェクトを定義するインタフェースを考え出したいと思います。それをIDiffable
としましょう。インタフェース定義の中の具体的なタイプ(何でも構いません)を参照できますか?
interface IDiffable
{
DiffDetails CompareWith(object other);
}
今の問題は、ユーザーがIDiffableを実装したものとそうでないものも含め、あらゆるタイプに渡すことができCompareWith
方法で、あります。ですから、IDiffableを実装するものに制限しましょう。
interface IDiffable
{
DiffDetails CompareWith(IDiffable other);
}
は今で残っているパズルの最後の一枚は、ユーザーがまだに行われている1回のコールとは異なる種類のオブジェクトに渡すことができます。それをどのように制限するのですか?
これは私が防止したいものの例です。
internal class TypeA : IDiffable
{
internal DiffDetails CompareWith(IDiffable obj)
{
// compare here
}
}
internal class TypeB : IDiffable
{
internal DiffDetails CompareWith(IDiffable obj)
{
// compare here
}
}
私は、私はあなたがこの使用してジェネリックを行うことができる唯一の次
var a = new TypeA();
var b = new TypeB();
var another_a = new TypeA();
var diff = a.CompareWith(another_a); // Correct usage
あなたはエリックリペットで[CuriouserとCuriouser](https://blogs.msdn.microsoft.com/ericlippert/2011/02/03/curiouser-and-curiouser/によって記述されて探しています) –