3 // Copyright (c) Microsoft Corporation. All rights reserved.
8 // <OWNER>Microsoft</OWNER>
9 // This class wraps a Type object and delegates all methods to that Type.
11 namespace System
.Reflection
{
14 using System
.Runtime
.InteropServices
;
15 using System
.Diagnostics
.Contracts
;
16 using CultureInfo
= System
.Globalization
.CultureInfo
;
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
;
30 [System
.Security
.SecuritySafeCritical
] // auto-generated
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
{
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.
106 return typeImpl
.GetMethod(name
,bindingAttr
);
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
);
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
);
266 public override bool IsSZArray { get { return typeImpl.IsSZArray; }
}