XML을 C# 클래스로 캡슐화하는 우아한 방법을 찾으려고합니다. 주위를 둘러 보면서, 어딘가에 Java 예제를 발견했습니다. (이 시점에서 어디에서 묻지 마십시오.) 아이디어가 떠오르지 만, C#에서도 가능한지 확실하지 않습니다.중첩 된 XML 캡슐화
현재 사용하고있는 우아한 방법은 적절한 노드가 발견되면 어떻게 해야할지를 나타내는 전체 일련의 중첩 된 switch 문을 사용하여 XPathNodeIterator/XPathNavigator 노드를 반복하고 처리되지 않은 노드를 나열하는 것입니다. 필자가 시도하고있는보다 우아한 메소드는 헬퍼 클래스를 사용하여 대량의 반복 작업을 수행하고 기본적으로 노드 이름과 해당 노드가 발생할 때 취할 조치를 취한다. 그 클래스 (이 이론적 있습니다 이유를 아래 참조) 현재 다음과 같습니다 심지어 개념 증명 시험에 도착하기 전에
class XmlNodeIterator
{
public XmlNodeIterator(XPathNodeIterator node, Dictionary<string, Action> children)
{
foreach (XPathNavigator childNode in node.Current.SelectChildren(XPathNodeType.Element))
{
Action child = null;
try
{
child = children[childNode.LocalName];
}
catch (KeyNotFoundException e)
{
// Log the warning in some fashion
}
if (child != null)
child.Invoke();
}
}
}
, 나는 개념에 문제가 있음을 발견했다. :) 대리자 함수에서 내부 childNode (예 : childNode.Value 또는 childNode.GetAttribute)에 액세스하고이를 외부 변수 또는 속성에 할당하려면 어떻게해야합니까?
저는 아직 일반 대표자에게 새로운 것이므로 가능한지 전혀 모르겠습니다. 그것이라면, 대단해! 그렇지 않다면 내가 시도 할 수있는 다른 우아한 해결책이 있습니까? 또는 중첩 스위치 만 사용해야합니까?
그게 제가 찾고 있던 것이고, 이제는 그것을 얻었습니다. 개념이 제대로 작동 할 것처럼 보입니다. 감사! – RobinHood70
FxCop은 사전>의 중첩 된 제네릭에 대해 귀찮게합니다. 당장은 그냥 떠날거야. –
RobinHood70
다행) 나는 행운을 빌어 요. – ILya