WebAPI를 통해 반환하고 동일한 WebApi에서 만드는 개체 목록이 있습니다. 그들이 다른 클래스의 일부라면 DataContract로 간단하게 꾸밀 수 있으며 모든 것이 잘 작동합니다.직렬화 중에 목록 이름을 처리하는 모범 사례
public class ParentClass()
{
[DataContract(Name = "Children", Namespace = "http://schemas.blah.blah"]
public List<ChildClass> Children
}
목록을 직접 반환 할 때 문제가 발생합니다. 이렇게하면 DataContract 이름과 네임 스페이스가 손실됩니다.
나는 다른 클래스
[DataContract(Name = "Children", Namespace = "http://schemas.blah.blah"]
public class ChildrenList : List<ChildClass>
{
}
를 작성하고 문제를 해결하지만, 더 많은 생성
public class ParentClass()
{
public ChildrenList Children
}
내 부모 클래스를 변경할 수 있습니다. 첫 번째는 내가 할 수있는 능력을 잃는다는 것입니다.
ChildrenList results = getchildrenlistfromsomemethod();
results = results.OrderByDescending(p => p.Rank).ToList();
나는 순수한 목록으로 할 수 있습니다. 또한 목록을 확장하는 것은 나쁜 습관입니다. 컬렉션에서 확장하여이 문제를 해결할 수 있지만 여전히 위의 문제가 더해져 AddRange() 메서드가 손실됩니다.
내 질문
1) 항상 특정 이름과 네임 스페이스에 직렬화 특정 유형의 목록을 만들 수있는 간단한 방법이 있나요이다?
2) 목록을 확장하는 것이 가장 좋습니다. orderby, groupby 등등을 수행하여 목록으로 변환하는 것 사이에 붙어 있습니다. foreach 루프의 새 확장 목록에 다시 항목을 추가하십시오. (비용이 많이 드는 것 같습니다)
3)이 문제를 해결하기위한 정말 쉽고 쉬운 방법을 놓쳤습니까?
작동하지 않을 것입니다 그. 그리고 비록 그것이 작동했다하더라도 그것은 부모 클래스 안에서 완벽 할 것입니다.하지만 제가 할 경우 ... 새로운리스트를 반환하십시오 ... 선언을 설정할 곳이 없습니다. –
Oli