私は問題があります。抽象クラス AbstractGenericClass の Program.cs からオーバーライド Host メソッドを開始しようとしています。
public abstract class AbstractGenericClass<T>
{
protected abstract void Host();
public static void Start()
{
//add additional logic for all classes that use this
try
{
((AbstractGenericClass<T>) Activator.CreateInstance(typeof(T))).Host();
Console.WriteLine("Works!");
}
catch (Exception ex)
{
Console.WriteLine("Don't Works!");
}
}
}
class AnotherClass
{
public void DoSomething()
{
//NOP
}
}
class Program
: AbstractGenericClass<AnotherClass>
{
static void Main(string[] args)
{
Program.Start();
Console.ReadLine();
}
protected override void Host()
{
Console.WriteLine("Host running...");
}
}
ここに、私が何を意味するかを示すために作成したすべてのサンプル クラスを追加します。((AbstractGenericClass) Activator.CreateInstance(typeof(T))).Host(); の行 InvalidCastException のためにプログラムをクラッシュさせます。Host メソッドを呼び出すことができる必要がありますが、これが機能しない場合、どのようにこれを行うことができるかわかりません。
これがどのように機能するか、他に考えがありますか?それとも、これは私が試したことは完全に間違っていますか?