New test.
[mono.git] / mcs / class / corlib / System.Reflection.Emit / PropertyBuilder.cs
index 304ab9116e3cb54b2aa126b1e52c293bfd5a0c03..17aabfbbfeddc0ac9c3ff9f57f4a4ed71d4be720 100644 (file)
@@ -41,10 +41,10 @@ using System.Runtime.InteropServices;
 namespace System.Reflection.Emit {
 #if NET_2_0
        [ComVisible (true)]
-       [ClassInterfaceAttribute (ClassInterfaceType.None)]
-       [ComDefaultInterfaceAttribute (typeof (_PropertyBuilder))]
+       [ComDefaultInterface (typeof (_PropertyBuilder))]
 #endif
-       public sealed class PropertyBuilder : PropertyInfo {
+       [ClassInterface (ClassInterfaceType.None)]
+       public sealed class PropertyBuilder : PropertyInfo, _PropertyBuilder {
                private PropertyAttributes attrs;
                private string name;
                private Type type;
@@ -106,16 +106,16 @@ namespace System.Reflection.Emit {
                        return null;
                }
                public override object[] GetCustomAttributes(bool inherit) {
-                       return null;
+                       throw not_supported ();
                }
                public override object[] GetCustomAttributes(Type attributeType, bool inherit) {
-                       return null;
+                       throw not_supported ();
                }
                public override MethodInfo GetGetMethod( bool nonPublic) {
                        return get_method;
                }
                public override ParameterInfo[] GetIndexParameters() {
-                       return null;
+                       throw not_supported ();
                }
                public override MethodInfo GetSetMethod( bool nonPublic) {
                        return set_method;
@@ -124,15 +124,22 @@ namespace System.Reflection.Emit {
                        return null;
                }
                public override object GetValue( object obj, BindingFlags invokeAttr, Binder binder, object[] index, CultureInfo culture) {
-                       return null;
+                       throw not_supported ();
                }
                public override bool IsDefined( Type attributeType, bool inherit) {
-                       return false;
+                       throw not_supported ();
                }
                public void SetConstant( object defaultValue) {
                        def_value = defaultValue;
                }
                public void SetCustomAttribute( CustomAttributeBuilder customBuilder) {
+#if NET_2_0
+                       string attrname = customBuilder.Ctor.ReflectedType.FullName;
+                       if (attrname == "System.Runtime.CompilerServices.SpecialNameAttribute") {
+                               attrs |= PropertyAttributes.SpecialName;
+                               return;
+                       }
+#endif
                        if (cattrs != null) {
                                CustomAttributeBuilder[] new_array = new CustomAttributeBuilder [cattrs.Length + 1];
                                cattrs.CopyTo (new_array, 0);
@@ -168,6 +175,31 @@ namespace System.Reflection.Emit {
                        }
                }
 #endif
+
+                void _PropertyBuilder.GetIDsOfNames([In] ref Guid riid, IntPtr rgszNames, uint cNames, uint lcid, IntPtr rgDispId)
+                {
+                        throw new NotImplementedException ();
+                }
+
+                void _PropertyBuilder.GetTypeInfo (uint iTInfo, uint lcid, IntPtr ppTInfo)
+                {
+                        throw new NotImplementedException ();
+                }
+
+                void _PropertyBuilder.GetTypeInfoCount (out uint pcTInfo)
+                {
+                        throw new NotImplementedException ();
+                }
+
+                void _PropertyBuilder.Invoke (uint dispIdMember, [In] ref Guid riid, uint lcid, short wFlags, IntPtr pDispParams, IntPtr pVarResult, IntPtr pExcepInfo, IntPtr puArgErr)
+                {
+                        throw new NotImplementedException ();
+                }
+
+               private Exception not_supported ()
+               {
+                       return new NotSupportedException ("The invoked member is not supported in a dynamic module.");
+               }
        }
 }