문제

Ok 다음과 비슷한 수업이 있습니다 ...

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

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

}

public class Items
{
    private string itemName;
    [DataMember]
    public string ItemName
    {
        get { return itemName; }
        set { itemName = value; }
    }

}

코드를 참조하면 "주문"목록을 매개 변수로 취하는 메소드가 있습니다.

ACME.Order newOrder = new ACME.Order();
ACME.Items newItems = new ACME.Items();

newOrder.ID = xxx
newItems.ItemName = xxx

SendOrderWithItemsFunction(newOrder)

위의 것은 잘 작동하지만 내 항목에 대한 추가 기능이 없으므로 다음과 같은 작업을 수행 할 수 있습니다.

newOrder.Items.Add(newItem);

그리고

newOrder.Items = newItems

NewOrder.ITEMS를 암시 적으로 변환 할 수 없다고 말하면 작동하지 않습니다.

무엇이 빠졌습니까?

도움이 되었습니까?

해결책

나는 뭔가 빠진 것 같아요 newOrder.OrderItems.Add(newItem) 당신이 당신의 게시물에있는 waht에 따르면 잘 작동해야합니다.

다른 nitpick 물건 :

"항목"클래스의 복수화는 단일 항목 일 경우 더 이상합니다. 이것은 아마도 단일 항목을 목록 속성에 할당하는 것이 "확인"으로 보이는 이유 일 것입니다.

게시물에서 삭감했을 수도 있지만 WCF에 의해 직렬화되는 모든 클래스는 클래스 멤버뿐만 아니라 "데이터 코닝"으로 표시되어야합니다.

이와 같은 객체를 초기화 할 때, 나는 그것이 사용하기에 훨씬 더 Cleaer라고 생각합니다. 이니셜 라이저를 입력하십시오:

var NewOrder = new ACME.Order{
     ID = xxx,
     OrderItems = new List<ACME.Item>
     {
          new ACME.Item{
               ItemName = xxx
          }
     }
};

다른 팁

당신이 가진 것은 당신의 추가 기능입니다 Order.OrderItems 재산:

newOrder.OrderItems.Add(newItem);

순서에 대한 전체 항목 목록을 추가 할 수도 있습니다.

var someList = new List<Items>();
//populate someList here
newOrder.OrderItems.AddRange(someList);

할 수 있어야합니다.

newOrder.OrderItems.Add(newItem);

최신 정보 []가 배열 인 경우 다음을 수행해야합니다.

newOrder.OrderItems.AddRange(newItem.ToList<Items>());

당신은 선언했습니다 newItems 로서 ACME.Items 유형이지만 OrderItems 당신의 재산 Order 수업은 a입니다 List<Items>. 이러한 유형은 한쪽에서 다른 유형으로 직접 할당 할 수 없습니다. 따라서의 과제 newOrder.OrderItems = newItems 말하려고하는 것과 같습니다List<Items> = Items. 위에서 설명한 수업을 기반으로 불가능합니다. 대신 목록에 추가해야합니다.

목록에 목록이 있고 add () 메소드가 없으면 해결 방법은 새 목록을 작성하고 항목을 추가 한 다음 내부 목록을 새 목록으로 설정하는 것입니다. 대신에:

outerList.innerList.Add(item)

..사용..

var newList = new List<ItemType>();
newList.Add(item);
outerList.innerList = newList;
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top