Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 无法隐式转换…列表_C#_.net_List - Fatal编程技术网

C# 无法隐式转换…列表

C# 无法隐式转换…列表,c#,.net,list,C#,.net,List,我有以下课程 public class Order { private Guid id; public Guid ID { get { return id; } set { id = value; } } private List<Items> orderItems; public List<Items> OrderItems { get { return order

我有以下课程

public class Order
{
    private Guid id;
    public Guid ID
    {
        get { return id; }
        set { id = value; }
    }

    private List<Items> orderItems;
    public List<Items> OrderItems
    {
        get { return orderItems; }
        set { orderItems= value; }
    }

}

public class Item
{

    private Guid id;
    public Guid ID
    {
        get { return id; }
        set { id = value; }
    }

    private string itemName;
    public string ItemName
    {
        get { return itemName; }
        set { itemName = value; }
    }

}
公共类秩序
{
私有Guid id;
公共Guid ID
{
获取{return id;}
设置{id=value;}
}
私人物品清单;
公共列表订购项目
{
获取{返回orderItems;}
设置{orderItems=value;}
}
}
公共类项目
{
私有Guid id;
公共Guid ID
{
获取{return id;}
设置{id=value;}
}
私有字符串itemName;
公共字符串ItemName
{
获取{return itemName;}
设置{itemName=value;}
}
}
然后,在我的应用程序中,我尝试以下

ACME.Order newOrder = new ACME.Order();
newOrder.ID = xxx
newOrder.OrderItems = new List<OrderItem> {
     new ACME.OrderItem {
         ID = xxx
         ItemName = xxx
     }
}
ACME.Order newOrder=new ACME.Order();
newOrder.ID=xxx
newOrder.OrderItems=新列表{
新ACME.OrderItem{
ID=xxx
ItemName=xxx
}
}

然而,我得到了一个错误“无法将type
'System.Collections.Generic.List'
隐式转换为
ACME.Item[]
。奇怪的是,我的列表对象上都没有“Add”选项。

你的应用程序是在Web服务的客户端吗

如果是这样,则.asmx和WCF Web服务的代理生成器在客户端生成一个数组
T[]
,其中服务接口使用
列表(或者,实际上,任何其他枚举类型)


您的应用程序将需要将列表强制转换为数组(使用
.ToArray()
)以在客户端设置数组属性。

假设
列表
是一个打字错误,您的意思是
列表
?这是
订单项目:项目
?还是另一个打字错误

我假设,
OrderItem:Item

对于
公共列表OrderItems{…}
,它必须是
列表

newOrder.OrderItems=新列表{
新ACME.OrderItem{
id=xxx
}
}

由于列表是不可协变的,即使在4.0版本中,忽略打字错误,我建议打开您的通用列表以自动初始化。然后您总是直接处理列表,而不是在添加项目时担心初始化。例如:

    public class Order
    {
        public Guid ID { get; set; }
        private List<Item> orderItems;
        public List<Item> OrderItems
        {
            get 
            {
                if (orderItems == null)
                    orderItems = new List<Item>();
                return orderItems; 
            }
        }
    }
    public class Item
    {
        public Guid ID { get; set; }
        public string ItemName { get; set; }
    }
        Order newOrder = new Order { ID = new Guid() };
        newOrder.OrderItems.Add( new Item() { ID = new Guid(), ItemName = "New Item"});
newOrder.OrderItems=新列表{
新ACME.OrderItem{
ID=xxx
ItemName=xxx
}
忽略你的打字错误,你的新列表应该像

newOrder.OrderItems = new List<OrderItem>() { new OrderItem { IX=1,Itemname="somename}}
newOrder.OrderItems=new List(){new OrderItem{IX=1,Itemname=“somename}}
我看到你在
新列表


HTH

您有一个
公共列表OrderItems
属性,并尝试用
新列表加载它。只是一个输入错误?您的类和变量名称都搞乱了->您有一个类项,但有一个列表,然后在您的应用程序中创建了一个列表,其他地方没有提到它是一个类…很好的地方-还需要注意的是用于svcutl.exe的
列表
etc;
/collectionType
,etcThanks刚刚从svcutil和所有works添加了集合类型行。
newOrder.OrderItems = new List<OrderItem> {
     new ACME.OrderItem {
         ID = xxx
         ItemName = xxx
     }
newOrder.OrderItems = new List<OrderItem>() { new OrderItem { IX=1,Itemname="somename}}