Как наследовать два одинаковых интерфейса с разными параметрами? - C#
Формулировка задачи:
Как наследовать "IEquatable<T1>" и "IEquatable<T2>" ? (C#)
Как мне об'яснить компилятору, что "T1" и "T2" никогда не будут одинаковы ?
public class A<T1, T2> : IEquatable<T1>, IEquatable<T2>
where T2 : A<T1, T2>
{
public T1 Data;
public T2 Link;
public A() { }
public A(T1 d, T2 l = null) { Data = d; Link = l; }
public bool Equals(T1 other) { return Equals(Data, other); }
public bool Equals(T2 other) { return Equals(other.Data); }
}Решение задачи: «Как наследовать два одинаковых интерфейса с разными параметрами?»
textual
Листинг программы
internal interface IABC{}
internal interface IDEF{}
internal interface IABCDEF : IDEF, IABC{}
public interface IA<in T>
{
void Go(T t);
}
public class AA1<T1, T2> : IA<T1>
{
public void Go(T1 t1){}
public void Go(T2 t2){}
}
public class AA2<T1, T2> : AA1<T1, T2>, IA<T2>{}
private static void Main(string[] args)
{
IA<IABCDEF> crazy = new AA1<IDEF, IABC>();
crazy.Go(null);
Console.WriteLine("Press any key ...");
Console.ReadKey();
}