2
저는 chem4word 프로젝트의 일부를 C#에서 AS3으로 번역하고 있습니다.C#/Linq는 XElement.Remove()가 호출 된 후 XElement를 XElement에 추가 할 수 있습니까?
아래 코드에서 XElement DelegateElement
은 Remove()
메서드를 호출합니다. mark == true
이면 을 전달하면 XAttribute "deleted" = "true"
이되지만 노드가 제거 된 경우 실제로 C#/Linq는 무엇을합니까?
private XElement DelegateElement;
public void DeleteSimple(bool mark)
{
if (IsDeleted())
{
Log.Debug("WARN: Trying to delete previously deleted CMLElement " + GetTag());
}
else
{
if (this.DelegateElement.Parent != null)
{
///////////////////////////////////////////
// Here, if the XElement is being removed,
// where does the MarkAsDeleted method add
// the XAttribute?
////////////////////////////////////////////
this.DelegateElement.Remove();
if (mark)
{
MarkAsDeleted(this.DelegateElement);
}
}
}
}
private void MarkAsDeleted(XElement delegateElement)
{
// Deleted = "deleted; True = "true"
delegateElement.Add(new XAttribute(Deleted, True));
}
단지 '재미'에 대한 코드는 as3 버전입니다. 위의 C# 방식에 따라 삭제 된 노드는 xml에 추가 된 새 속성 (또는 새 정보)을 가져 오지 않습니다.
private var DelegateElement:XML;
public function DeleteSimple(mark:Boolean):void
{
if(IsDeleted())
{
// log output
}
else
{
if(this.DelegateElement.parent() != null)
{
delete this.DelegateElement.parent().children()[this.DelegateElement.childIndex()];
if(mark)
{
MarkAsDeleted(this.DelegateElement);
}
}
}
}
private function MarkAsDeleted(delegateElement:XML):void
{
delegateElement['@'+Deleted] = True;
}
신난다, 나는 단지 senario를 완전히 생각하지 않았다. as3에서 테스트했는데, 마치 당신이 말하는 것처럼 작동하는 것 같습니다. 무리 감사! – gltovar