Updates referencesource to .NET 4.7
[mono-project.git] / mcs / class / referencesource / mscorlib / system / reflection / typedelegator.cs
blob226eb47884b004112e586ea7595643642cb3eb1c
1 // ==++==
2 //
3 // Copyright (c) Microsoft Corporation. All rights reserved.
4 //
5 // ==--==
6 // TypeDelegator
7 //
8 // <OWNER>Microsoft</OWNER>
9 // This class wraps a Type object and delegates all methods to that Type.
11 namespace System.Reflection {
13 using System;
14 using System.Runtime.InteropServices;
15 using System.Diagnostics.Contracts;
16 using CultureInfo = System.Globalization.CultureInfo;
18 [Serializable]
19 [System.Runtime.InteropServices.ComVisible(true)]
20 public class TypeDelegator : TypeInfo
22 public override bool IsAssignableFrom(System.Reflection.TypeInfo typeInfo){
23 if(typeInfo==null) return false;
24 return IsAssignableFrom(typeInfo.AsType());
27 protected Type typeImpl;
29 #if FEATURE_CORECLR
30 [System.Security.SecuritySafeCritical] // auto-generated
31 #endif
32 protected TypeDelegator() {}
34 public TypeDelegator(Type delegatingType) {
35 if (delegatingType == null)
36 throw new ArgumentNullException("delegatingType");
37 Contract.EndContractBlock();
39 typeImpl = delegatingType;
42 public override Guid GUID {
43 get {return typeImpl.GUID;}
46 public override int MetadataToken { get { return typeImpl.MetadataToken; } }
48 public override Object InvokeMember(String name,BindingFlags invokeAttr,Binder binder,Object target,
49 Object[] args,ParameterModifier[] modifiers,CultureInfo culture,String[] namedParameters)
51 return typeImpl.InvokeMember(name,invokeAttr,binder,target,args,modifiers,culture,namedParameters);
54 public override Module Module {
55 get {return typeImpl.Module;}
58 public override Assembly Assembly {
59 get {return typeImpl.Assembly;}
62 public override RuntimeTypeHandle TypeHandle {
63 get{return typeImpl.TypeHandle;}
66 public override String Name {
67 get{return typeImpl.Name;}
70 public override String FullName {
71 get{return typeImpl.FullName;}
74 public override String Namespace {
75 get{return typeImpl.Namespace;}
78 public override String AssemblyQualifiedName {
79 get {
80 return typeImpl.AssemblyQualifiedName;
84 public override Type BaseType {
85 get{return typeImpl.BaseType;}
88 protected override ConstructorInfo GetConstructorImpl(BindingFlags bindingAttr,Binder binder,
89 CallingConventions callConvention, Type[] types,ParameterModifier[] modifiers)
91 return typeImpl.GetConstructor(bindingAttr,binder,callConvention,types,modifiers);
94 [System.Runtime.InteropServices.ComVisible(true)]
95 public override ConstructorInfo[] GetConstructors(BindingFlags bindingAttr)
97 return typeImpl.GetConstructors(bindingAttr);
100 protected override MethodInfo GetMethodImpl(String name,BindingFlags bindingAttr,Binder binder,
101 CallingConventions callConvention, Type[] types,ParameterModifier[] modifiers)
103 // This is interesting there are two paths into the impl. One that validates
104 // type as non-null and one where type may be null.
105 if (types == null)
106 return typeImpl.GetMethod(name,bindingAttr);
107 else
108 return typeImpl.GetMethod(name,bindingAttr,binder,callConvention,types,modifiers);
111 public override MethodInfo[] GetMethods(BindingFlags bindingAttr)
113 return typeImpl.GetMethods(bindingAttr);
116 public override FieldInfo GetField(String name, BindingFlags bindingAttr)
118 return typeImpl.GetField(name,bindingAttr);
121 public override FieldInfo[] GetFields(BindingFlags bindingAttr)
123 return typeImpl.GetFields(bindingAttr);
126 public override Type GetInterface(String name, bool ignoreCase)
128 return typeImpl.GetInterface(name,ignoreCase);
131 public override Type[] GetInterfaces()
133 return typeImpl.GetInterfaces();
136 public override EventInfo GetEvent(String name,BindingFlags bindingAttr)
138 return typeImpl.GetEvent(name,bindingAttr);
141 public override EventInfo[] GetEvents()
143 return typeImpl.GetEvents();
146 protected override PropertyInfo GetPropertyImpl(String name,BindingFlags bindingAttr,Binder binder,
147 Type returnType, Type[] types, ParameterModifier[] modifiers)
149 if (returnType == null && types == null)
150 return typeImpl.GetProperty(name,bindingAttr);
151 else
152 return typeImpl.GetProperty(name,bindingAttr,binder,returnType,types,modifiers);
155 public override PropertyInfo[] GetProperties(BindingFlags bindingAttr)
157 return typeImpl.GetProperties(bindingAttr);
160 public override EventInfo[] GetEvents(BindingFlags bindingAttr)
162 return typeImpl.GetEvents(bindingAttr);
165 public override Type[] GetNestedTypes(BindingFlags bindingAttr)
167 return typeImpl.GetNestedTypes(bindingAttr);
170 public override Type GetNestedType(String name, BindingFlags bindingAttr)
172 return typeImpl.GetNestedType(name,bindingAttr);
175 public override MemberInfo[] GetMember(String name, MemberTypes type, BindingFlags bindingAttr)
177 return typeImpl.GetMember(name,type,bindingAttr);
180 public override MemberInfo[] GetMembers(BindingFlags bindingAttr)
182 return typeImpl.GetMembers(bindingAttr);
185 protected override TypeAttributes GetAttributeFlagsImpl()
187 return typeImpl.Attributes;
190 protected override bool IsArrayImpl()
192 return typeImpl.IsArray;
195 protected override bool IsPrimitiveImpl()
197 return typeImpl.IsPrimitive;
200 protected override bool IsByRefImpl()
202 return typeImpl.IsByRef;
205 protected override bool IsPointerImpl()
207 return typeImpl.IsPointer;
210 protected override bool IsValueTypeImpl()
212 return typeImpl.IsValueType;
215 protected override bool IsCOMObjectImpl()
217 return typeImpl.IsCOMObject;
220 public override bool IsConstructedGenericType
224 return typeImpl.IsConstructedGenericType;
228 public override Type GetElementType()
230 return typeImpl.GetElementType();
233 protected override bool HasElementTypeImpl()
235 return typeImpl.HasElementType;
238 public override Type UnderlyingSystemType
240 get {return typeImpl.UnderlyingSystemType;}
243 // ICustomAttributeProvider
244 public override Object[] GetCustomAttributes(bool inherit)
246 return typeImpl.GetCustomAttributes(inherit);
249 public override Object[] GetCustomAttributes(Type attributeType, bool inherit)
251 return typeImpl.GetCustomAttributes(attributeType, inherit);
254 public override bool IsDefined(Type attributeType, bool inherit)
256 return typeImpl.IsDefined(attributeType, inherit);
259 [System.Runtime.InteropServices.ComVisible(true)]
260 public override InterfaceMapping GetInterfaceMap(Type interfaceType)
262 return typeImpl.GetInterfaceMap(interfaceType);
265 #if MONO
266 public override bool IsSZArray { get { return typeImpl.IsSZArray; } }
267 #endif