XObjectChange Sabit listesi
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
için XObjectbir olay tetiklendiğinde olay türünü belirtir.
public enum class XObjectChange
public enum XObjectChange
type XObjectChange =
Public Enum XObjectChange
- Devralma
Alanlar
Add | 0 | öğesine XObject eklendi veya eklenecek XContainer. |
Name | 2 | veya XObject yeniden adlandırılacaktır. |
Remove | 1 | veya XObject öğesinden XContainerkaldırılmıştır. |
Value | 3 | değerinin XObject değeri değiştirildi veya değiştirilecek. Buna ek olarak, boş bir öğenin seri hale getirilmesinde yapılan bir değişiklik (boş bir etiketten başlangıç/bitiş etiketi çiftine veya tam tersi) bu olayı tetikler. |
Örnekler
Aşağıdaki örnek, ağaca bir öğe ekleyerek bir olay oluşturur.
XElement root = new XElement("Root", "content");
root.Changing += (sender, e) =>
{
Console.WriteLine("Changing event raised");
Console.WriteLine(" Sender: " + sender.GetType());
Console.WriteLine(" Changing: " + e.ObjectChange);
};
root.Changed += (sender, e) =>
{
Console.WriteLine("Changed event raised");
Console.WriteLine(" Sender: " + sender.GetType());
Console.WriteLine(" Changed: " + e.ObjectChange);
};
root.Add(new XElement("Child", "child content"));
Bu örnek aşağıdaki çıkışı oluşturur:
Changing event raised
Sender: System.Xml.Linq.XElement
Changing: Add
Changed event raised
Sender: System.Xml.Linq.XElement
Changed: Add
Aşağıdaki örnek, ağaçtan bir öğeyi kaldırarak bir olay oluşturur.
XElement root = new XElement("Root",
new XElement("Child", "content")
);
root.Changing += (sender, e) =>
{
Console.WriteLine("Changing event raised");
Console.WriteLine(" Sender: " + sender.GetType());
Console.WriteLine(" Changing: " + e.ObjectChange);
};
root.Changed += (sender, e) =>
{
Console.WriteLine("Changed event raised");
Console.WriteLine(" Sender: " + sender.GetType());
Console.WriteLine(" Changed: " + e.ObjectChange);
};
root.Element("Child").Remove();
Bu örnek aşağıdaki çıkışı oluşturur:
Changing event raised
Sender: System.Xml.Linq.XElement
Changing: Remove
Changed event raised
Sender: System.Xml.Linq.XElement
Changed: Remove
Aşağıdaki örnek, bir öğenin adını değiştirerek bir olay oluşturur.
XElement root = new XElement("Root", "content");
root.Changing += (sender, e) =>
{
Console.WriteLine("Changing event raised");
Console.WriteLine(" Sender: " + sender.GetType());
Console.WriteLine(" Changing: " + e.ObjectChange);
};
root.Changed += (sender, e) =>
{
Console.WriteLine("Changed event raised");
Console.WriteLine(" Sender: " + sender.GetType());
Console.WriteLine(" Changed: " + e.ObjectChange);
};
root.Name = "NewName";
Bu örnek aşağıdaki çıkışı oluşturur:
Changing event raised
Sender: System.Xml.Linq.XElement
Changing: Name
Changed event raised
Sender: System.Xml.Linq.XElement
Changed: Name
Aşağıdaki örnek, bir özniteliğin değerini ayarlayarak bir olay oluşturur.
XElement root = new XElement("Root",
new XAttribute("Att", "att value")
);
root.Changing += (sender, e) =>
{
Console.WriteLine("Changing event raised");
Console.WriteLine(" Sender: " + sender.GetType());
Console.WriteLine(" Changing: " + e.ObjectChange);
};
root.Changed += (sender, e) =>
{
Console.WriteLine("Changed event raised");
Console.WriteLine(" Sender: " + sender.GetType());
Console.WriteLine(" Changed: " + e.ObjectChange);
};
root.FirstAttribute.Value = "new contents";
Bu örnek aşağıdaki çıkışı oluşturur:
Changing event raised
Sender: System.Xml.Linq.XAttribute
Changing: Value
Changed event raised
Sender: System.Xml.Linq.XAttribute
Changed: Value
Açıklamalar
Bu enum
, için bir olay tetiklendiğinde XObjectolay türünü belirtir.
XML ağacını değiştiren tüm işlemler bir dizi temel öğeye ayrılır. Dört tür ilkel vardır. İlkellerden ikisi (Ekle ve Kaldır) koleksiyonlar üzerinde eylemde bulunur. Bunlardan ikisi (Ad ve Değer) örnekler üzerinde işlem gösterir. Bu ilkellerin her biri için karşılık gelen bir olay vardır.
Bu olaylardan birinin içindeki XML ağacını değiştirirken dikkatli olmanız gerekir, çünkü bunu yapmak beklenmeyen sonuçlara yol açabilir. Örneğin, bir Changing olay alırsanız ve olay işlenirken düğümü ağaçtan kaldırırsanız, olayı almayabilirsiniz Changed . Bir olay işlenirken, olayı alan düğümü içerenden başka bir XML ağacını değiştirmek geçerli olur; Değişikliklerin olayın tetiklendiği belirli düğümleri etkilememesi koşuluyla aynı ağacı değiştirmek bile geçerlidir. Ancak, olayı alan düğümü içeren ağacın alanını değiştirirseniz, aldığınız olaylar ve ağaç üzerindeki etkisi tanımlanmamış olur.