.NET Core Cast для интерфейса с параметром универсального типа типа, который реализует интерфейс.C#

Место общения программистов C#
Ответить
Anonymous
 .NET Core Cast для интерфейса с параметром универсального типа типа, который реализует интерфейс.

Сообщение Anonymous »

В .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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»