Я не могу привести объект производного класса к базовому интерфейсу C# [дубликат]C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Я не могу привести объект производного класса к базовому интерфейсу C# [дубликат]

Сообщение Anonymous »

Может ли кто-нибудь помочь мне в успешном приведении типов объекта производного класса, который в реальном приложении создан с помощью внедрения зависимостей и получен из builder.Services. Я привожу его к базовому интерфейсу, который, в свою очередь, реализует некоторую реализацию другого базового интерфейса.
Я попытался представить ситуацию на небольшом примере.

Код: Выделить всё

public class OrderResult
{

}

public interface IOrderCommand
{

}

public interface ICommand where T : IOrderCommand
{
Task HandleAsync(T orderCommand);
}

public class CreateOrderCommand : IOrderCommand
{

}

public class Concreate : ICommand
{
public Task HandleAsync(CreateOrderCommand command)
{
throw new NotImplementedException();
}
}
Здесь не удалось выполнить следующее приведение.

Код: Выделить всё

var concreateType = new Concreate();

var command = (ICommand)concreateType; --> fails and throws the following exception

Код: Выделить всё

System.InvalidCastException: 'Unable to cast object of type 'Concreate' to type 'ICommand
1[IOrderCommand]'.'`
Даже я пометил интерфейс ICommand, приняв T как «in», и он должен работать. Я не хочу использовать какой-либо конкретный тип, поскольку я взаимодействую с другим клиентским кодом, который должен динамически извлекать объекты.
Погуглил другие потоки stackoverflow, но они бесполезны

Подробнее здесь: https://stackoverflow.com/questions/793 ... base-c-sha
Реклама
Ответить Пред. темаСлед. тема

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

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