C#

2013-05-05 4 views
1

제목에 C#을 언급했지만 일반적인 프로그래밍 질문입니다. 내가C#

ID : 1 
ProjectName : "Test" 
City : "NY" 
Size : 100 
Location : "USA" 

가 지금은 타사 응용 프로그램 그러나 나는 응용 프로그램에 대한 해당 테이블을 직렬화하는 데 필요한 다음 필드가 포함 TABLEA가

: 난 그냥 다음을 수행하는 가장 좋은 방법을 찾기 위해 찾고 있어요 일반 데이터 계약 (아래 참조)을 사용하며 필드 이름을 약간 수정해야합니다. 다음과 같이 따라서 위의 표는 직렬화 할 것이다 :

ProjectName -> NameofProject 
City -> ProjectCity 
Location ->ProjectLocation 

이 내가 달성 할 방법입니다 당신은 내가 새로운 필드 이름/키에 TableA의에서 필드를 매핑하는 데 필요한 볼 수 있듯이

<Object> 
<type>Project</type> 
<Fields> 
<Key>NameofProject</Key><Value>Test</value> 
<Key>ProjectCity</Key><Value>NY</value> 
<Key>ProjectLocation</Key><Value>USA</value> 
</Fields> 
</Object> 

위 : -

InputField -> OutputKey 
ProjectName -> NameofProject 
City -> ProjectCity 
Location ->ProjectLocation 

I would then load the data from this table into a Set 
I would then loop through each row of the input 
- for each column in the row I would get the OutputKey based on the InputField as stored in my mapping Set, and build the xml 

나는 세트에서 정보의 소량을 저장 한 후 보라를하고 맡기 상기 한 바와 같이 매핑 관계를 저장하는 매핑 테이블 만들기 각 분야에 대한 okups 너무 나쁘지 않을거야. 하지만 나는 경험이 많은 C# 사용자가 아니기 때문에 C#에서이 작업을 수행하는 더 좋은 방법이 있는지 궁금해하고 있습니다. 도움이나 지침을 주시면 감사하겠습니다.

EDIT : XSLT를 사용하여 제안한 의견은 좋은 생각이지만이 작업의 다른 복잡성 때문에 데이터 계약을 기반으로 XML 코드를 작성하는 것이 좋습니다. 입력 데이터 테이블과 매핑 테이블의 SQL 조인을 통해 매핑을 수행 할 수있는 방법이 있습니까?

+0

내장 된 XSL serializer를 사용하여 적절한 XSLT를 사용하고 출력에 serialize 된 입력을 변환하면이 XSLT는 구성 파일이나 db의 테이블에서 얻을 수 있으므로 코드 재 컴파일없이 동적으로 변경할 수 있습니다. – Saravanan

+0

재미있는 생각처럼 들리네. XSLT를 사용하여 이전에 많은 작업을 해본 적이 없지만이를 수행하는 방법은 알지만 매핑 테이블에 대한 조인을 통해 테이블을 쿼리 할 때 필드 이름에 매핑을 수행 할 방법이 없습니까? – Gotts

+0

또한 - 응용 프로그램에서 공유하는 데이터 계약을 사용해야하므로 XSLT를 통해 매핑하는 것이 이상적이지 않습니다. 그리고 다른 이유로 복잡한 것을 만들려고합니다 – Gotts

답변

1

고정 된 매핑 세트가있는 경우 DataContractSerializer을 사용하거나 XmlSerializer을 통해이 작업을 수행 한 다음 다음 샘플에서와 같이 다른 이름으로 멤버를 장식 할 수 있습니다.

은 첫 번째는 우리가 여기에서 볼 때, 모델이 테이블 구조를 모방하고 속성이 속성에 대한 사용자 정의 이름을 가진 데이터를 표시하는 데 사용되는 DataContractSerializer 후자 사용 XmlSerializer

[DataContract] 
public class Project 
{ 
    [DataMember(Name = "NameOfTheProject")] 
    public string ProjectName { get; set; } 

    [DataMember(Name = "ProjectLocation")] 
    public string Location { get; set; } 
} 

[Serializable] 
public class Project1 
{ 
    [System.Xml.Serialization.XmlAttribute(AttributeName = "ProjectName")] 
    public string ProjName { get; set; } 
} 

를 사용 직렬화 될 때.

+0

고마워요. 그러나 나는 이것을 어떻게 사용할 것인가? 이미 출력 XML을 일반 형식 ( 키 이름)으로 정의하고 해당 데이터 계약을 기반으로 개체를 작성하여 응용 프로그램에 전송하는 데이터 계약이 있습니다. (RESTful API 및 직렬화를 통해). 이 매핑은 언제 적용 할 예정이며 어떻게 사용합니까? 감사합니다. – Gotts

+0

확인했습니다.이 기능은 저에게 적합하지 않습니다. – Gotts