微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

类中通用项目的通用集合?

如何解决类中通用项目的通用集合?

| 我正在尝试创建一个接受两个通用类型(IQueue,IItem)的类,例如:
public class Coordinator<T,K>
    where T : IQueue<K>
    where K : IItem
{
    private T<K> collection = new T<K>();
}
哪里:
public interface IQueue<T> where T : IItem
{
}

public class MyQueue<T> : IQueue<T>
    where T : IItem
{
}
但是编译器不喜欢:
private T<K> collection = new T<K>();
这是可能吗? 谢谢!     

解决方法

        我认为您需要执行以下操作:
public interface IQueue<T> where T : IItem
{
}

public class MyQueue<T> : IQueue<T>
    where T : IItem
{
}
因为您说的是:协调器获得了IQueue,但是您正在尝试使用更具体的信息构造MyQueue。 使用已经讨论过的“ 4”,您可以做到这一点而不会出现编译器错误:
class Coordinator <T,K>
    where T : IQueue<K>
    where K : IItem
{
    private T collection = (T)Activator.CreateInstance(typeof(T));
}
    ,        我想您可能已经期望在\“ where T:IQueue where K:IItem \”中有一个序列,但是现在实际上需要对其进行明确定义。如果将来可以使用,那将是一个不错的功能。直觉上你的要求对我来说很有意义。 这是解决该问题的建议方法。
public class Coordinator<T> where T : IQueue<T>,new()
{
    private T collection = new T();  
}
public interface IQueue<T>{}
public interface IItem{}
    

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。