クラスのすべてのインターフェイスを含み、クラスを含まないdllファイルを作成する必要があります。私はクラスの多くのために、これらのインタフェースを使用しているため それはそのようにする必要があります。インターフェイスでのインターフェイスプロパティの実装
public interface IClassA
{
string Word { get; }
}
public interface ITest<TClassA> where TClassA : IClassA
{
TClassA A { get; }
}
これらのインタフェース私が望むように実装して、二つのクラスの例:
public class ClassA : IClassA
{
public string Word
{
get;
private set;
}
public string Sentence
{
get;
private set;
}
public ClassA(string word, string sentence)
{
this.Word = word;
this.Sentence = sentence;
}
}
public class Test : ITest<ClassA>
{
public ClassA A
{
get;
private set;
}
public Test(ClassA a)
{
this.A = a;
}
}
をそして、私は何かをしたいです
public static void Main(string[] args)
{
ClassA a = new ClassA("hey", "hey world!");
Test t = new Test(a);
Print((ITest<IClassA>)t);
}
public static void Print(ITest<IClassA> t)
{
Console.WriteLine(t.A.Word);
}
しかし、このキャスト:メインプログラムのそのよう(ITest<IClassA>)t
実行時エラーになります。 どうすれば解決できますか?感謝! ありがとう!
私はテストクラスがにClassAとないIClassAの性質を持つようにしたい、それは可能ではないのか? – Gal1014
はい、そうです。 @IThomasの[回答](http://stackoverflow.com/a/40069043/594832)を見てください: 'ITest'が共変な場合は、可能です:https://dotnetfiddle.net/KKkktG –
khlr