У меня проблема. Я пытаюсь запустить переопределяющий метод Host из Program.cs в абстрактном классе AbstractGenericClass.Вызов метода переопределения в абстрактном классе
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, но я не знаю, как это сделать, если это не работает.
Есть ли у вас какая-либо другая идея, как это могло бы работать? Или это совершенно неправильно, что я пытаюсь?