1

I have next code:

public interface IOrder
{
}

public interface IManagedOrder<out T> where T : IOrder
{
    T Order { get; }
}

public class ManagedPrivateExchange
{
    public void PlaceOrder(IManagedOrder<IOrder> mOrder)
    {
    }
}

public class ManagedOrder<T> : IManagedOrder<T> where T : IOrder
{  
    public T Order {  get; }
    public ManagedPrivateExchange Exchange { get; set; }
    public void Place()
    {
        Exchange.PlaceOrder(this)//<-----here is ERROR #1 
    }
}

Error details:

CS1503 Argument 1: cannot convert from 'ManagedOrder' to 'IManagedOrder' Trading.Core

QUESTION:

  • Is it possible to assign this ManagedOrder<T> (where T is IOrder) to IManagedOrder<IOrder>. What I need to change to achieve my goal?
GDocal
  • 305
  • 4
  • 10
  • 2
    change constraints to `where T : IOrder, class`. [Value-types don't support variance](https://stackoverflow.com/questions/12454794/why-covariance-and-contravariance-do-not-support-value-type). – René Vogt Jan 18 '18 at 15:57
  • awesome, so easy, but I never saw this information before – GDocal Jan 18 '18 at 16:09

0 Answers0