【发布时间】:2021-03-01 02:08:12
【问题描述】:
更新: This 是我试图要求的,但不知道如何。
基本上我需要的是一个值列表,但我不在乎这些值是什么类型,只要它们实现了一些不同的功能。像这样的:
List<MagicType> values1 = new List<MagicType>();
List<MagicType> values2 = someAlreadyExistingListOfMagicType;
Vector3 position = someVector3;
Quaternion rotation = someQuat;
bool sleeping = false;
values1.Add(new MagicType<Vector3>(position));
values1.Add(new MagicType<Quaternion>(rotation));
values1.Add(new MagicType<bool>(sleeping));
List<byte> result = new List<byte>();
foreach(MagicType value1 in values1)
{
foreach(MagicType value2 in values2)
{
if(value1.Compare(Value2))
{
result.AddRange(value1.GetBytes());
}
}
}
我不确定我想要的是否正常。我试过这样做:
public class MagicClass<T>
{
private T value;
public MagicClass(T value)
{
this.value = value;
}
public bool Compare(T a, T b)
{
return a == b;
}
public byte[] GetBytes()
{
//somehow return byte array
}
}
但这抱怨操作符 '==' 不能应用于类型 T 和 T。
我确信这里一定有一个简单的解决方案,但我在这方面花了很长时间,我无法再思考了。我该如何解决我的问题?
【问题讨论】:
-
“我需要一种方法让 IMagicType 了解类型是什么” -- 也许 你应该让它通用吗?你的问题很难理解。您在上面显示的要添加到列表中的值,不能添加到列表中,因为它们不实现您的任意接口
IMagicType,不管是什么。 也许而不是IMagicType,你只想要IComparable?也许您不应该发布这个问题,直到您解决了您“难以理解如何提出这个问题”的问题。就目前而言,还不清楚。 -
您是否尝试让
IMagicType继承自IComparable<IMagicType>和一些自定义IByteConvertible<IMagicType>? -
@PeterDuniho 我希望至少清楚我想要什么,即使我不知道如何实现它。我只需要一个值列表,但我不在乎这些值是什么类型,只要它们实现了一些不同的功能。我已经编辑了这个问题,希望能更清楚我在追求/尝试过什么。
-
@JL0PD 我不确定我在想什么将其命名为
IMagicType以暗示它是一个接口。我很确定这根本不是我想要的。我已经编辑了这个问题,所以希望它现在更有意义。当你说让IMagicType继承自IComparable<IMagicType>时……是这样的吗?类/接口能否继承自第一类类型的泛型类? -
这看起来像XY Problem。 为什么您首先要这样做?