我正在尝试找到使用通用接口的通用列表作为变量的正确方法。
这是一个例子。这可能不是最好的,但希望您能明白这一点:
public interface IPrimitive<T>
{
T Value { get; }
}
然后在另一个类中,我希望能够声明一个变量,该变量包含实现的对象列表IPrimitive<T>
对于任意的T
.
// I know this line will not compile because I do not define T
List<IPrimitive<T>> primitives = new List<IPrimitives<T>>;
primitives.Add(new Star()); // Assuming Star implements IPrimitive<X>
primitives.Add(new Sun()); // Assuming Sun implements IPrimitive<Y>
请注意,T
in IPrimitive<T>
列表中的每个条目可能不同。
关于如何建立这样的关系有什么想法吗?替代方法?
public interface IPrimitive
{
}
public interface IPrimitive<T> : IPrimitive
{
T Value { get; }
}
public class Star : IPrimitive<T> //must declare T here
{
}
那么你应该能够拥有
List<IPrimitive> primitives = new List<IPrimitive>;
primitives.Add(new Star()); // Assuming Star implements IPrimitive
primitives.Add(new Sun()); // Assuming Sun implements IPrimitive
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)