【发布时间】:2014-03-14 14:13:05
【问题描述】:
遵循这两个 SO 问题:
Is it possible to use a list of untyped generics in C#?
和
How am I able to create A List<T> containing an open generic Interface?
public interface IValue
{
object Min { get; set; }
object Max { get; set; }
object Avg { get; set; }
}
public abstract class Value<T> : IValue
{
abstract T Min;
abstract T Max;
abstract T Avg;
object IValue.Avg { get { return Avg; } }
object IValue.Min { get { return Min; } }
object IValue.Max { get { return Max; } }
public Value(T min, T max, T avg)
{
Min = min;
Max= max;
Avg = avg;
}
}
代码中的其他地方......
Value myValue = new Value<ulong>(x, y, z);
Value myValue = new Value<ushort>(x, y, z);
List<IValue> myList = new List<IValue>();
myList.add(myValue);
//Do stuff like myList[0].Min
我无法让它正常工作。我想象它与我的界面以及我如何使用它有关。我希望能够调用构造函数并设置我需要的值。
我收到诸如“修饰符'抽象'在字段上无效。请尝试使用属性”和“无法创建接口值抽象类的实例”之类的错误,但我也无法执行新的 IValue。
【问题讨论】:
-
抽象属性对你有用吗?无论如何,为什么价值是抽象的?对我来说看起来很具体。
-
就是一个例子。我也可以使用 或 ,反之亦然。 -
@user999999928 这并没有改变这样一个事实,即不需要抽象类型。它是通用的,所以它可以接受不同类型的参数而不是抽象的。
-
啊,对不起,误会了。关键是我想创建一个 List
> ,根据另一个 SO,您需要创建一个在 Value 类中具有抽象值的接口。 -
我已经编辑了你的标题。请参阅“Should questions include “tags” in their titles?”,其中的共识是“不,他们不应该”。