gpt4 book ai didi

c# - 使用接口(interface)的泛型 T 列表

转载 作者:太空宇宙 更新时间:2023-11-03 19:09:07 24 4
gpt4 key购买 nike

遵循这两个 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

我无法让它正常工作。我想这与我的界面以及我如何使用它有关。我希望能够调用构造函数并根据需要设置值。

我收到诸如“修饰符‘abstract’在字段上无效。尝试使用属性”和“无法创建接口(interface)值抽象类的实例”之类的错误,但我也无法执行新的 IValue。

最佳答案

  • 你不能创建一个接口(interface)的对象,所以你不能做new IValue() .

  • 你不能创建一个抽象类型的对象,所以你不能做new Value<SomeType>()要么。

  • Value<T> , Min , MaxAvg字段,并且字段不能是抽象的。你想制作属性:

    public abstract T Min { get; set; }
    public abstract T Max { get; set; }
    public abstract T Avg { get; set; }
  • 您可能不想使用 abstract根本。 Value<T>看起来很完整,并且鉴于您希望能够创建它,因此没有理由将其作为抽象类型。

关于c# - 使用接口(interface)的泛型 T 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22407465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com