Проблема Pentaho с драйвером данных Cassandra datastax

В общем случае вам придется либо использовать List<object>, либо создать не общий базовый класс, например

public abstract class ValuePair
{
    public string Name { get; set;}
    public abstract object RawValue { get; }
}

public class ValuePair<T> : ValuePair
{
    public T Value { get; set; }              
    public object RawValue { get { return Value; } }
}

. Тогда вы можете иметь List<ValuePair>.

Теперь существует одно исключение: ковариантные / контравариантные типы в C # 4. Например, вы можете написать:

var streamSequenceList = new List<IEnumerable<Stream>>();

IEnumerable<MemoryStream> memoryStreams = null; // For simplicity
IEnumerable<NetworkStream> networkStreams = null; // For simplicity
IEnumerable<Stream> streams = null; // For simplicity

streamSequenceList.Add(memoryStreams);
streamSequenceList.Add(networkStreams);
streamSequenceList.Add(streams);

Это неприменимо в ваш случай, потому что:

  • Вы используете общий класс, а не интерфейс
  • . Вы не можете изменить его на общий ковариационный интерфейс потому что у вас T происходит «in» и «out» API
  • . Вы используете типы значений в качестве аргументов типа, и они не работают с (поэтому IEnumerable<int> не является IEnumerable<object>)
0
задан Karol 11 March 2019 в 14:06
поделиться