1 // System.Reflection/TypeDelegator.cs
3 // Paolo Molaro (lupus@ximian.com)
5 // (C) 2002 Ximian, Inc.
8 // Copyright (C) 2004 Novell, Inc (http://www.novell.com)
10 // Permission is hereby granted, free of charge, to any person obtaining
11 // a copy of this software and associated documentation files (the
12 // "Software"), to deal in the Software without restriction, including
13 // without limitation the rights to use, copy, modify, merge, publish,
14 // distribute, sublicense, and/or sell copies of the Software, and to
15 // permit persons to whom the Software is furnished to do so, subject to
16 // the following conditions:
18 // The above copyright notice and this permission notice shall be
19 // included in all copies or substantial portions of the Software.
21 // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
22 // EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23 // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
24 // NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
25 // LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
26 // OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
27 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
31 using System
.Reflection
;
32 using System
.Globalization
;
34 namespace System
.Reflection
{
37 public class TypeDelegator
: Type
{
38 protected Type typeImpl
;
40 protected TypeDelegator () {
43 public TypeDelegator( Type delegatingType
)
45 if (delegatingType
== null)
46 throw new ArgumentNullException ("delegatingType must be non-null");
47 typeImpl
= delegatingType
;
50 public override Assembly Assembly
{
51 get { return typeImpl.Assembly; }
54 public override string AssemblyQualifiedName
{
55 get { return typeImpl.AssemblyQualifiedName; }
58 public override Type BaseType
{
59 get { return typeImpl.BaseType; }
62 public override string FullName
{
63 get { return typeImpl.FullName; }
66 public override Guid GUID
{
67 get { return typeImpl.GUID; }
70 public override Module Module
{
71 get { return typeImpl.Module; }
74 public override string Name
{
75 get { return typeImpl.Name; }
78 public override string Namespace
{
79 get { return typeImpl.Namespace; }
82 public override RuntimeTypeHandle TypeHandle
{
83 get { return typeImpl.TypeHandle; }
86 public override Type UnderlyingSystemType
{
87 get { return typeImpl.UnderlyingSystemType; }
90 protected override TypeAttributes
GetAttributeFlagsImpl ()
92 throw new NotImplementedException ();
93 //return typeImpl.GetAttributeFlagsImpl ();
96 protected override ConstructorInfo
GetConstructorImpl (
97 BindingFlags bindingAttr
, Binder binder
, CallingConventions cc
,
98 Type
[] types
, ParameterModifier
[] modifiers
)
100 throw new NotImplementedException ();
101 //return typeImpl.GetConstructorImpl (bindingAttr, binder, callConvention, types, modifiers);
104 public override ConstructorInfo
[] GetConstructors( BindingFlags bindingAttr
)
106 return typeImpl
.GetConstructors (bindingAttr
);
109 public override object[] GetCustomAttributes (bool inherit
)
111 return typeImpl
.GetCustomAttributes (inherit
);
114 public override object[] GetCustomAttributes (Type attributeType
, bool inherit
)
116 return typeImpl
.GetCustomAttributes (attributeType
, inherit
);
119 public override Type
GetElementType()
121 return typeImpl
.GetElementType ();
124 public override EventInfo
GetEvent( string name
, BindingFlags bindingAttr
)
126 return typeImpl
.GetEvent (name
, bindingAttr
);
129 public override EventInfo
[] GetEvents()
131 return GetEvents (BindingFlags
.Public
);
134 public override EventInfo
[] GetEvents (BindingFlags bindingAttr
)
136 return typeImpl
.GetEvents (bindingAttr
);
139 public override FieldInfo
GetField (string name
, BindingFlags bindingAttr
)
141 return typeImpl
.GetField (name
, bindingAttr
);
144 public override FieldInfo
[] GetFields( BindingFlags bindingAttr
)
146 return typeImpl
.GetFields (bindingAttr
);
149 public override Type
GetInterface( string name
, bool ignoreCase
)
151 return typeImpl
.GetInterface (name
, ignoreCase
);
154 public override InterfaceMapping
GetInterfaceMap( Type interfaceType
)
156 return typeImpl
.GetInterfaceMap (interfaceType
);
159 public override Type
[] GetInterfaces ()
161 return typeImpl
.GetInterfaces ();
164 public override MemberInfo
[] GetMember( string name
, MemberTypes type
, BindingFlags bindingAttr
)
166 return typeImpl
.GetMember (name
, type
, bindingAttr
);
169 public override MemberInfo
[] GetMembers( BindingFlags bindingAttr
)
171 return typeImpl
.GetMembers (bindingAttr
);
174 protected override MethodInfo
GetMethodImpl( string name
, BindingFlags bindingAttr
, Binder binder
, CallingConventions callConvention
, Type
[] types
, ParameterModifier
[] modifiers
)
176 throw new NotImplementedException ();
177 //return typeImpl.GetMethodImpl (name, bindingAttr, binder, callConvention, types, modifiers);
180 public override MethodInfo
[] GetMethods( BindingFlags bindingAttr
)
182 return typeImpl
.GetMethods (bindingAttr
);
185 public override Type
GetNestedType( string name
, BindingFlags bindingAttr
)
187 return typeImpl
.GetNestedType (name
, bindingAttr
);
190 public override Type
[] GetNestedTypes( BindingFlags bindingAttr
)
192 return typeImpl
.GetNestedTypes (bindingAttr
);
195 public override PropertyInfo
[] GetProperties( BindingFlags bindingAttr
)
197 return typeImpl
.GetProperties (bindingAttr
);
200 protected override PropertyInfo
GetPropertyImpl( string name
, BindingFlags bindingAttr
, Binder binder
, Type returnType
, Type
[] types
, ParameterModifier
[] modifiers
)
202 throw new NotImplementedException ();
203 //return typeImpl.GetPropertyImpl (name, bindingAttr, bindingAttr, returnType, types, modifiers);
206 protected override bool HasElementTypeImpl()
208 throw new NotImplementedException ();
209 //return typeImpl.HasElementTypeImpl ();
212 public override object InvokeMember( string name
, BindingFlags invokeAttr
, Binder binder
, object target
, object[] args
, ParameterModifier
[] modifiers
, CultureInfo culture
, string[] namedParameters
) {
213 return typeImpl
.InvokeMember (name
, invokeAttr
, binder
, target
, args
, modifiers
, culture
, namedParameters
);
216 protected override bool IsArrayImpl()
218 throw new NotImplementedException ();
219 //return typeImpl.IsArrayImpl ();
222 protected override bool IsByRefImpl()
224 throw new NotImplementedException ();
225 //return typeImpl.IsByRefImpl ();
228 protected override bool IsCOMObjectImpl()
230 throw new NotImplementedException ();
231 //return typeImpl.IsCOMObjectImpl ();
234 public override bool IsDefined( Type attributeType
, bool inherit
) {
235 return typeImpl
.IsDefined (attributeType
, inherit
);
238 protected override bool IsPointerImpl()
240 throw new NotImplementedException ();
241 //return typeImpl.IsPointerImpl ();
244 protected override bool IsPrimitiveImpl()
246 throw new NotImplementedException ();
247 //return typeImpl.IsPrimitiveImpl ();
250 protected override bool IsValueTypeImpl()
252 throw new NotImplementedException ();
253 //return typeImpl.IsValueTypeImpl ();
255 #if NET_2_0 || BOOTSTRAP_NET_2_0
256 public override Type
[] GetGenericArguments ()
258 throw new NotImplementedException ();
261 public override bool HasGenericArguments
{
263 throw new NotImplementedException ();
267 public override bool ContainsGenericParameters
{
269 throw new NotImplementedException ();
273 public override bool IsGenericParameter
{
275 throw new NotImplementedException ();
279 public override int GenericParameterPosition
{
281 throw new NotImplementedException ();
285 public override MethodInfo DeclaringMethod
{
287 throw new NotImplementedException ();