Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
TypeDescriptionProvider.cs
Go to the documentation of this file.
3
5
6public abstract class TypeDescriptionProvider
7{
9 {
10 }
11
13
15
17 {
18 }
19
21 {
22 _parent = parent;
23 }
24
25 public virtual object? CreateInstance(IServiceProvider? provider, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type objectType, Type[]? argTypes, object[]? args)
26 {
27 if (_parent != null)
28 {
29 return _parent.CreateInstance(provider, objectType, argTypes, args);
30 }
31 if (objectType == null)
32 {
33 throw new ArgumentNullException("objectType");
34 }
35 return Activator.CreateInstance(objectType, args);
36 }
37
38 public virtual IDictionary? GetCache(object instance)
39 {
40 return _parent?.GetCache(instance);
41 }
42
43 [RequiresUnreferencedCode("The Type of instance cannot be statically discovered.")]
44 public virtual ICustomTypeDescriptor GetExtendedTypeDescriptor(object instance)
45 {
46 if (_parent != null)
47 {
48 return _parent.GetExtendedTypeDescriptor(instance);
49 }
51 }
52
53 protected internal virtual IExtenderProvider[] GetExtenderProviders(object instance)
54 {
55 if (_parent != null)
56 {
57 return _parent.GetExtenderProviders(instance);
58 }
59 if (instance == null)
60 {
61 throw new ArgumentNullException("instance");
62 }
63 return Array.Empty<IExtenderProvider>();
64 }
65
66 [RequiresUnreferencedCode("The Type of component cannot be statically discovered.")]
67 public virtual string? GetFullComponentName(object component)
68 {
69 if (_parent != null)
70 {
71 return _parent.GetFullComponentName(component);
72 }
73 return GetTypeDescriptor(component)?.GetComponentName();
74 }
75
76 [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor | DynamicallyAccessedMemberTypes.PublicFields)]
77 public Type GetReflectionType([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor | DynamicallyAccessedMemberTypes.PublicFields)] Type objectType)
78 {
79 return GetReflectionType(objectType, null);
80 }
81
82 [RequiresUnreferencedCode("GetReflectionType is not trim compatible because the Type of object cannot be statically discovered.")]
83 public Type GetReflectionType(object instance)
84 {
85 if (instance == null)
86 {
87 throw new ArgumentNullException("instance");
88 }
89 return GetReflectionType(instance.GetType(), instance);
90 }
91
92 [return: DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor | DynamicallyAccessedMemberTypes.PublicFields)]
93 public virtual Type GetReflectionType([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor | DynamicallyAccessedMemberTypes.PublicFields)] Type objectType, object? instance)
94 {
95 if (_parent != null)
96 {
97 return _parent.GetReflectionType(objectType, instance);
98 }
99 return objectType;
100 }
101
102 public virtual Type GetRuntimeType(Type reflectionType)
103 {
104 if (_parent != null)
105 {
106 return _parent.GetRuntimeType(reflectionType);
107 }
108 if (reflectionType == null)
109 {
110 throw new ArgumentNullException("reflectionType");
111 }
112 if (reflectionType.GetType().Assembly == typeof(object).Assembly)
113 {
114 return reflectionType;
115 }
116 return reflectionType.UnderlyingSystemType;
117 }
118
119 public ICustomTypeDescriptor? GetTypeDescriptor([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type objectType)
120 {
121 return GetTypeDescriptor(objectType, null);
122 }
123
124 [RequiresUnreferencedCode("The Type of instance cannot be statically discovered.")]
126 {
127 if (instance == null)
128 {
129 throw new ArgumentNullException("instance");
130 }
131 return GetTypeDescriptor(instance.GetType(), instance);
132 }
133
134 public virtual ICustomTypeDescriptor? GetTypeDescriptor([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type objectType, object? instance)
135 {
136 if (_parent != null)
137 {
138 return _parent.GetTypeDescriptor(objectType, instance);
139 }
141 }
142
143 public virtual bool IsSupportedType(Type type)
144 {
145 if (type == null)
146 {
147 throw new ArgumentNullException("type");
148 }
149 if (_parent != null)
150 {
152 }
153 return true;
154 }
155}
static ? object CreateInstance([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors|DynamicallyAccessedMemberTypes.NonPublicConstructors)] Type type, BindingFlags bindingAttr, Binder? binder, object?[]? args, CultureInfo? culture)
Definition Activator.cs:17
virtual ICustomTypeDescriptor GetExtendedTypeDescriptor(object instance)
ICustomTypeDescriptor? GetTypeDescriptor(object instance)
virtual ? IDictionary GetCache(object instance)
virtual ? ICustomTypeDescriptor GetTypeDescriptor([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type objectType, object? instance)
virtual ? string GetFullComponentName(object component)
Type GetReflectionType([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor|DynamicallyAccessedMemberTypes.PublicFields)] Type objectType)
virtual Type GetReflectionType([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicParameterlessConstructor|DynamicallyAccessedMemberTypes.PublicFields)] Type objectType, object? instance)
TypeDescriptionProvider(TypeDescriptionProvider parent)
ICustomTypeDescriptor? GetTypeDescriptor([DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.All)] Type objectType)
virtual ? object CreateInstance(IServiceProvider? provider, [DynamicallyAccessedMembers(DynamicallyAccessedMemberTypes.PublicConstructors)] Type objectType, Type[]? argTypes, object[]? args)
virtual IExtenderProvider[] GetExtenderProviders(object instance)
static ? Type GetType(string typeName, bool throwOnError, bool ignoreCase)
Definition Type.cs:408
Type UnderlyingSystemType
Definition Type.cs:61