В .NET Core C#
я пробую что-то вроде этого:
(IInterface)instance
Где экземпляр новой реализации
()
И реализация: IInterface
Где находится новая реализация
()
И реализация: IInterface
Где находится новая реализация
()
И реализация: IInterface
code> & Параметр: IParameter
Проблема связана с приведением общего параметра. Когда я предоставляю параметр вместо IParameter, это работает, но во время компиляции невозможно узнать, какой тип, реализующий IParameter, будет использоваться. Все эти объекты будут созданы посредством отражения.
Итак, есть ли способ, которым это приведение работает? Или какой-то другой способ реализовать это, например, не предоставлять параметр универсального типа, как это можно сделать с помощью typeof.
EDIT Благодаря Ziriax< /p>
Полностью рабочий пример:
interface IInterface
{
void Run(TInput input);
}
abstract class AbstractClass : IInterface
where TInput : IParameter
{
public abstract void Execute(TInput input);
public void Run(IParameter input)
{
Execute((TInput)input);
}
}
interface IParameter {}
class Implementation : AbstractClass
{
public void Run(Parameter input)
{
}
}
class Parameter : IParameter {}
class Program
{
static void Main()
{
object instance = new Implementation();
var castInstance = (IInterface) instance;
castInstance.Run(new Parameter());
}
}
Подробнее здесь: https://stackoverflow.com/questions/528 ... implements