Я попытался представить ситуацию на небольшом примере.
Код: Выделить всё
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
Даже я пометил интерфейс ICommand, приняв T как «in», и он должен работать. Я не хочу использовать какой-либо конкретный тип, поскольку я взаимодействую с другим клиентским кодом, который должен динамически извлекать объекты.
Погуглил другие потоки stackoverflow, но они бесполезны
Подробнее здесь: https://stackoverflow.com/questions/793 ... base-c-sha