Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
XElementElementPropertyDescriptor.cs
Go to the documentation of this file.
1
using
System
;
2
using
System.Xml.Linq
;
3
4
namespace
MS.Internal.Xml.Linq.ComponentModel
;
5
6
internal
sealed
class
XElementElementPropertyDescriptor
:
XPropertyDescriptor
<XElement, object>
7
{
8
private
XDeferredSingleton<XElement>
_value
;
9
10
private
XElement
_changeState
;
11
12
public
XElementElementPropertyDescriptor
()
13
: base(
"Element"
)
14
{
15
}
16
17
public
override
object
GetValue
(
object
component)
18
{
19
return
_value
=
new
XDeferredSingleton<XElement>
((
XElement
e,
XName
n) => e.
Element
(n), component as
XElement
,
null
);
20
}
21
22
protected
override
void
OnChanged
(
object
sender,
XObjectChangeEventArgs
args)
23
{
24
if
(
_value
==
null
)
25
{
26
return
;
27
}
28
switch
(args.
ObjectChange
)
29
{
30
case
XObjectChange
.Add:
31
if
(sender is
XElement
xElement2 &&
_value
.
element
== xElement2.
Parent
&&
_value
.
name
== xElement2.Name &&
_value
.
element
.
Element
(
_value
.
name
) == xElement2)
32
{
33
OnValueChanged(
_value
.
element
,
EventArgs
.
Empty
);
34
}
35
break
;
36
case
XObjectChange
.Remove:
37
if
(sender is
XElement
xElement3 &&
_changeState
== xElement3)
38
{
39
_changeState
=
null
;
40
OnValueChanged(
_value
.
element
,
EventArgs
.
Empty
);
41
}
42
break
;
43
case
XObjectChange
.Name:
44
if
(sender is
XElement
xElement)
45
{
46
if
(
_value
.
element
== xElement.
Parent
&&
_value
.
name
== xElement.Name &&
_value
.
element
.
Element
(
_value
.
name
) == xElement)
47
{
48
OnValueChanged(
_value
.
element
,
EventArgs
.
Empty
);
49
}
50
else
if
(
_changeState
== xElement)
51
{
52
_changeState
=
null
;
53
OnValueChanged(
_value
.
element
,
EventArgs
.
Empty
);
54
}
55
}
56
break
;
57
}
58
}
59
60
protected
override
void
OnChanging
(
object
sender,
XObjectChangeEventArgs
args)
61
{
62
if
(
_value
!=
null
)
63
{
64
XObjectChange
objectChange = args.
ObjectChange
;
65
if
((uint)(objectChange - 1) <= 1u)
66
{
67
XElement
xElement = sender as
XElement
;
68
_changeState
= ((xElement !=
null
&& _value.element == xElement.Parent && _value.name == xElement.Name &&
_value
.
element
.
Element
(
_value
.
name
) == xElement) ? xElement :
null
);
69
}
70
}
71
}
72
}
MS.Internal.Xml.Linq.ComponentModel.XDeferredSingleton.name
XName name
Definition
XDeferredSingleton.cs:12
MS.Internal.Xml.Linq.ComponentModel.XDeferredSingleton.element
XElement element
Definition
XDeferredSingleton.cs:10
MS.Internal.Xml.Linq.ComponentModel.XDeferredSingleton
Definition
XDeferredSingleton.cs:7
MS.Internal.Xml.Linq.ComponentModel.XElementElementPropertyDescriptor.OnChanging
override void OnChanging(object sender, XObjectChangeEventArgs args)
Definition
XElementElementPropertyDescriptor.cs:60
MS.Internal.Xml.Linq.ComponentModel.XElementElementPropertyDescriptor._changeState
XElement _changeState
Definition
XElementElementPropertyDescriptor.cs:10
MS.Internal.Xml.Linq.ComponentModel.XElementElementPropertyDescriptor.OnChanged
override void OnChanged(object sender, XObjectChangeEventArgs args)
Definition
XElementElementPropertyDescriptor.cs:22
MS.Internal.Xml.Linq.ComponentModel.XElementElementPropertyDescriptor._value
XDeferredSingleton< XElement > _value
Definition
XElementElementPropertyDescriptor.cs:8
MS.Internal.Xml.Linq.ComponentModel.XElementElementPropertyDescriptor.GetValue
override object GetValue(object component)
Definition
XElementElementPropertyDescriptor.cs:17
MS.Internal.Xml.Linq.ComponentModel.XElementElementPropertyDescriptor.XElementElementPropertyDescriptor
XElementElementPropertyDescriptor()
Definition
XElementElementPropertyDescriptor.cs:12
MS.Internal.Xml.Linq.ComponentModel.XElementElementPropertyDescriptor
Definition
XElementElementPropertyDescriptor.cs:7
MS.Internal.Xml.Linq.ComponentModel.XPropertyDescriptor
Definition
XPropertyDescriptor.cs:8
System.EventArgs.Empty
static readonly EventArgs Empty
Definition
EventArgs.cs:9
System.EventArgs
Definition
EventArgs.cs:8
System.Xml.Linq.XContainer.Element
XElement? Element(XName name)
Definition
XContainer.cs:579
System.Xml.Linq.XElement
Definition
XElement.cs:19
System.Xml.Linq.XName
Definition
XName.cs:7
System.Xml.Linq.XObjectChangeEventArgs.ObjectChange
XObjectChange ObjectChange
Definition
XObjectChangeEventArgs.cs:15
System.Xml.Linq.XObjectChangeEventArgs
Definition
XObjectChangeEventArgs.cs:4
System.Xml.Linq.XObject.Parent
XElement? Parent
Definition
XObject.cs:53
MS.Internal.Xml.Linq.ComponentModel
Definition
XAttributeValuePropertyDescriptor.cs:4
System.Xml.Linq.XObjectChange
XObjectChange
Definition
XObjectChange.cs:4
System.Xml.Linq
Definition
BaseUriAnnotation.cs:1
System
Definition
BlockingCollection.cs:8
source
System.ComponentModel.TypeConverter
MS.Internal.Xml.Linq.ComponentModel
XElementElementPropertyDescriptor.cs
Generated by
1.10.0