Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
DynamicMetaObject.cs
Go to the documentation of this file.
4
5namespace System.Dynamic;
6
7public class DynamicMetaObject
8{
9 public static readonly DynamicMetaObject[] EmptyMetaObjects = Array.Empty<DynamicMetaObject>();
10
11 private static readonly object s_noValueSentinel = new object();
12
13 private readonly object _value = s_noValueSentinel;
14
15 public Expression Expression { get; }
16
18
19 public object? Value
20 {
21 get
22 {
23 if (!HasValue)
24 {
25 return null;
26 }
27 return _value;
28 }
29 }
30
32
34 {
35 get
36 {
37 if (HasValue)
38 {
40 if (type.IsValueType)
41 {
42 return type;
43 }
44 return Value?.GetType();
45 }
46 return null;
47 }
48 }
49
51
59
65
67 {
69 return binder.FallbackConvert(this);
70 }
71
73 {
75 return binder.FallbackGetMember(this);
76 }
77
79 {
81 return binder.FallbackSetMember(this, value);
82 }
83
85 {
87 return binder.FallbackDeleteMember(this);
88 }
89
91 {
93 return binder.FallbackGetIndex(this, indexes);
94 }
95
101
103 {
105 return binder.FallbackDeleteIndex(this, indexes);
106 }
107
109 {
111 return binder.FallbackInvokeMember(this, args);
112 }
113
115 {
117 return binder.FallbackInvoke(this, args);
118 }
119
121 {
123 return binder.FallbackCreateInstance(this, args);
124 }
125
127 {
129 return binder.FallbackUnaryOperation(this);
130 }
131
133 {
135 return binder.FallbackBinaryOperation(this, arg);
136 }
137
139 {
140 return Array.Empty<string>();
141 }
142
144 {
146 Expression[] array = new Expression[objects.Length];
147 for (int i = 0; i < objects.Length; i++)
148 {
152 array[i] = expression;
153 }
154 return array;
155 }
156
158 {
161 {
163 if (metaObject == null || !metaObject.HasValue || metaObject.Value == null || metaObject.Expression != expression)
164 {
166 }
167 return metaObject;
168 }
170 }
171}
static readonly BindingRestrictions Empty
virtual DynamicMetaObject BindCreateInstance(CreateInstanceBinder binder, DynamicMetaObject[] args)
virtual DynamicMetaObject BindInvokeMember(InvokeMemberBinder binder, DynamicMetaObject[] args)
static Expression[] GetExpressions(DynamicMetaObject[] objects)
DynamicMetaObject(Expression expression, BindingRestrictions restrictions, object value)
virtual DynamicMetaObject BindConvert(ConvertBinder binder)
virtual DynamicMetaObject BindInvoke(InvokeBinder binder, DynamicMetaObject[] args)
virtual IEnumerable< string > GetDynamicMemberNames()
virtual DynamicMetaObject BindBinaryOperation(BinaryOperationBinder binder, DynamicMetaObject arg)
static readonly DynamicMetaObject[] EmptyMetaObjects
DynamicMetaObject(Expression expression, BindingRestrictions restrictions)
static readonly object s_noValueSentinel
virtual DynamicMetaObject BindUnaryOperation(UnaryOperationBinder binder)
virtual DynamicMetaObject BindDeleteMember(DeleteMemberBinder binder)
virtual DynamicMetaObject BindGetIndex(GetIndexBinder binder, DynamicMetaObject[] indexes)
static DynamicMetaObject Create(object value, Expression expression)
virtual DynamicMetaObject BindSetMember(SetMemberBinder binder, DynamicMetaObject value)
virtual DynamicMetaObject BindSetIndex(SetIndexBinder binder, DynamicMetaObject[] indexes, DynamicMetaObject value)
virtual DynamicMetaObject BindGetMember(GetMemberBinder binder)
virtual DynamicMetaObject BindDeleteIndex(DeleteIndexBinder binder, DynamicMetaObject[] indexes)
static void RequiresNotNull(object value, string paramName)
static Exception InvalidMetaObjectCreated(object p0)
Definition Error.cs:18