2011-01-02 3 views
0

사용자가 내 시스템에서 수행하는 특정 작업에 대한 감사 정보를 보유하고있는 SQL Server DB에 테이블이 있습니다. 행동을 수행 한 사람, 수행 된 시간, 행동은 여러 가지 행동을 쉽게 통과 할 수있는 모든 정보입니다. 그러나 수행 된 작업에 따라 캡처하고 싶은 다른 정보가있을 수 있습니다. 이는 해당 작업과 관련이 있습니다. 이를 처리하기 위해 필자는 생성 한 여러 메타 데이터 객체의 직렬화 된 XML을 포함하는 테이블에 "XML 메타 데이터"열을 추가하기로 결정했습니다. 내가 추가로 추적하는 데 관심이있는 각 작업에 대해 메타 데이터 개체를 만들었습니다. 따라서 각 개체는 특정 추가 정보 (메타 데이터)를 추적하여 해당 작업을 담당합니다. 개체는 일련 화되고 새 열에 기록됩니다.ASP.NET : XML에 직렬화 된 개체 유형을 결정하는 가장 좋은 방법

이 테이블의 정보를 저장하는 데 사용하는 SystemAction 개의 개체가 있고 DB에서 XML 문자열을 포함하는 문자열 필드를 추가했습니다. 문제는 SystemAction 객체에서이 XML을 다시 읽을 때 일반적으로 다시 올바른 메타 데이터 객체로 변환하는 방법으로 고심하고 있습니다. 각 메타 데이터 객체는 서로 다른 필드를 가지며 각 객체는 XML 문자열을 가져 와서 메타 데이터 객체 유형을 반환하려고하는 자체 정적 메서드를 갖습니다.

SomeActionMetadata mdObj = SomeActionMetadata.BuildFromXML(xmlStringFromDB);

을하지만 난 정말 여기에 다른 개체의 임의의 숫자로 변환 할 수있는 몇 가지 XML이다 "라고 할 수있는 방법을 알고하지 않습니다를 파악하고 다시 나에게 올바른 개체를 제공합니다 : 그래서 내가 말할 수 있습니다. . "

필자는 현재 각 개체의 필드로 저장된 각 메타 데이터 개체에 고유 한 ID를 할당 한 다음 사례 문을 사용하여 해당 ID를 전환하고 적절한 클래스의 정적 빌드 메서드를 사용하여 올바른 대상을 만드십시오. 그러나 나는 그것보다 조금 더 자동적 인 것을 기대하고 있었다. SystemAction 객체의 목록을 가지고 있고 루프를 통해 루프하고 올바른 메타 데이터 객체 유형을 생성하려는 경우 어떻게해야합니까?

나는 누군가가 전에 이와 비슷한 것을 경험했거나 나를 도와 줄 수있는 기사 나 게시물을 가르쳐 주길 바랬다. 매우 감사합니다.

+0

System.Xml.Serialization에서 xml serialization을 사용하지 않는 이유는 무엇입니까? 이것은 out-of-the-box에서 2-way XML 직렬화입니다. –

+0

http://stackoverflow.com/questions/775647/how-do-i-deserialize-xml-without-knowing-the-type-beforehand의 가능한 복제본 ... 여기에 언급 된 내용을 시도해보고 해결할 수 있는지 알려주세요. 귀하의 문제 –

+0

@Subhash, 내 문제를 해결하기에 충분한 방향으로 가리 켰습니다. 감사! –

답변

1

Subhash Dike에 의해 아래 설명에 표시된 바와 같이 올바른 방향으로 나를 가리킬 수 있었던 유사한 SO 질문 here이 있습니다.

관련 문제