общие интерфейсы и полиморфизм

У меня есть следующий код:

public abstract class Operand<T>
{
    public T Value { get; protected set; }

    public bool IsEmpty { get; protected set; }

    public override string ToString()
    {
        return IsEmpty ? Value.ToString() : string.Empty;
    }
}
public class DoubleOperand : Operand<Double> {}

public interface IOperandFactory<T>
    {
        Operand<T> CreateEmptyOperand();
        Operand<T> CreateOperand(T value);
    }

public class DoubleFactory: IOperandFactory<double>
{
    public Operand<Double> CreateEmptyOperand()
    {
        //implementation
    }

    public Operand<Double> CreateOperand(double value)
    {
        //implementation
    }
}

Я упростил код, чтобы просто показать структуру. Теперь мне нужен associationDictionary, который вернет IOperandFactory для необходимого типа : Примерно так:

var factoryDict = 
new Dictionary<Type, IOperandFactory<>>() { { typeof(double), new DoubleFactory() } };

Не могли бы вы помочь мне добиться этого, если это возможно?

7
задан Marc Gravell 16 January 2012 в 08:58
поделиться