Terraria
v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
InstanceDescriptor.cs
Go to the documentation of this file.
1
using
System.Collections
;
2
using
System.Reflection
;
3
4
namespace
System.ComponentModel.Design.Serialization
;
5
6
public
sealed
class
InstanceDescriptor
7
{
8
public
ICollection
Arguments
{
get
; }
9
10
public
bool
IsComplete
{
get
; }
11
12
public
MemberInfo
?
MemberInfo
{
get
; }
13
14
public
InstanceDescriptor
(
MemberInfo
? member,
ICollection
? arguments)
15
: this(member, arguments, isComplete: true)
16
{
17
}
18
19
public
InstanceDescriptor
(
MemberInfo
? member,
ICollection
? arguments,
bool
isComplete)
20
{
21
MemberInfo
= member;
22
IsComplete
= isComplete;
23
if
(arguments ==
null
)
24
{
25
Arguments
=
Array
.Empty<
object
>();
26
}
27
else
28
{
29
object
[]
array
=
new
object
[arguments.
Count
];
30
arguments.
CopyTo
(
array
, 0);
31
Arguments
=
array
;
32
}
33
if
(member is
FieldInfo
fieldInfo)
34
{
35
if
(!fieldInfo.IsStatic)
36
{
37
throw
new
ArgumentException
(
System
.
SR
.
InstanceDescriptorMustBeStatic
);
38
}
39
if
(
Arguments
.
Count
!= 0)
40
{
41
throw
new
ArgumentException
(
System
.
SR
.
InstanceDescriptorLengthMismatch
);
42
}
43
}
44
else
if
(member is
ConstructorInfo
constructorInfo)
45
{
46
if
(constructorInfo.IsStatic)
47
{
48
throw
new
ArgumentException
(
System
.
SR
.
InstanceDescriptorCannotBeStatic
);
49
}
50
if
(
Arguments
.
Count
!= constructorInfo.GetParameters().Length)
51
{
52
throw
new
ArgumentException
(
System
.
SR
.
InstanceDescriptorLengthMismatch
);
53
}
54
}
55
else
if
(member is
MethodInfo
methodInfo)
56
{
57
if
(!methodInfo.IsStatic)
58
{
59
throw
new
ArgumentException
(
System
.
SR
.
InstanceDescriptorMustBeStatic
);
60
}
61
if
(
Arguments
.
Count
!= methodInfo.GetParameters().Length)
62
{
63
throw
new
ArgumentException
(
System
.
SR
.
InstanceDescriptorLengthMismatch
);
64
}
65
}
66
else
if
(member is
PropertyInfo
propertyInfo)
67
{
68
if
(!propertyInfo.CanRead)
69
{
70
throw
new
ArgumentException
(
System
.
SR
.
InstanceDescriptorMustBeReadable
);
71
}
72
MethodInfo
getMethod = propertyInfo.GetGetMethod();
73
if
(getMethod !=
null
&& !getMethod.
IsStatic
)
74
{
75
throw
new
ArgumentException
(
System
.
SR
.
InstanceDescriptorMustBeStatic
);
76
}
77
}
78
}
79
80
public
object
?
Invoke
()
81
{
82
object
[]
array
=
new
object
[
Arguments
.
Count
];
83
Arguments
.
CopyTo
(
array
, 0);
84
for
(
int
i = 0; i <
array
.Length; i++)
85
{
86
if
(
array
[i] is
InstanceDescriptor
instanceDescriptor)
87
{
88
array
[i] = instanceDescriptor.Invoke();
89
}
90
}
91
if
(
MemberInfo
is
ConstructorInfo
)
92
{
93
return
((
ConstructorInfo
)
MemberInfo
).Invoke(
array
);
94
}
95
if
(
MemberInfo
is
MethodInfo
)
96
{
97
return
((
MethodInfo
)
MemberInfo
).Invoke(
null
,
array
);
98
}
99
if
(
MemberInfo
is
PropertyInfo
)
100
{
101
return
((
PropertyInfo
)
MemberInfo
).GetValue(
null
,
array
);
102
}
103
if
(
MemberInfo
is
FieldInfo
)
104
{
105
return
((
FieldInfo
)
MemberInfo
).GetValue(
null
);
106
}
107
return
null
;
108
}
109
}
System.ArgumentException
Definition
ArgumentException.cs:9
System.Array
Definition
Array.cs:16
System.ComponentModel.Design.Serialization.InstanceDescriptor.InstanceDescriptor
InstanceDescriptor(MemberInfo? member, ICollection? arguments, bool isComplete)
Definition
InstanceDescriptor.cs:19
System.ComponentModel.Design.Serialization.InstanceDescriptor.InstanceDescriptor
InstanceDescriptor(MemberInfo? member, ICollection? arguments)
Definition
InstanceDescriptor.cs:14
System.ComponentModel.Design.Serialization.InstanceDescriptor.Invoke
object? Invoke()
Definition
InstanceDescriptor.cs:80
System.ComponentModel.Design.Serialization.InstanceDescriptor.Arguments
ICollection Arguments
Definition
InstanceDescriptor.cs:8
System.ComponentModel.Design.Serialization.InstanceDescriptor.IsComplete
bool IsComplete
Definition
InstanceDescriptor.cs:10
System.ComponentModel.Design.Serialization.InstanceDescriptor
Definition
InstanceDescriptor.cs:7
System.Reflection.ConstructorInfo
Definition
ConstructorInfo.cs:8
System.Reflection.FieldInfo
Definition
FieldInfo.cs:8
System.Reflection.MemberInfo
Definition
MemberInfo.cs:7
System.Reflection.MethodBase.IsStatic
bool IsStatic
Definition
MethodBase.cs:50
System.Reflection.MethodInfo
Definition
MethodInfo.cs:7
System.Reflection.PropertyInfo
Definition
PropertyInfo.cs:8
System.SR.InstanceDescriptorMustBeReadable
static string InstanceDescriptorMustBeReadable
Definition
SR.cs:102
System.SR.InstanceDescriptorLengthMismatch
static string InstanceDescriptorLengthMismatch
Definition
SR.cs:104
System.SR.InstanceDescriptorMustBeStatic
static string InstanceDescriptorMustBeStatic
Definition
SR.cs:100
System.SR.InstanceDescriptorCannotBeStatic
static string InstanceDescriptorCannotBeStatic
Definition
SR.cs:98
System.SR
Definition
SR.cs:7
System.Collections.ICollection.Count
int Count
Definition
ICollection.cs:5
System.Collections.ICollection.CopyTo
void CopyTo(Array array, int index)
System.Collections.ICollection
Definition
ICollection.cs:4
System.Collections
Definition
BlockingCollection.cs:8
System.ComponentModel.Design.Serialization
Definition
DesignerSerializerAttribute.cs:1
System.Reflection
Definition
ICustomTypeProvider.cs:1
System.ExceptionArgument.array
@ array
System
Definition
BlockingCollection.cs:8
source
System.ComponentModel.TypeConverter
System.ComponentModel.Design.Serialization
InstanceDescriptor.cs
Generated by
1.10.0