[ComVisible (true)]
[Serializable]
-#if NET_4_0
public
-#else
- public sealed
-#endif
class CustomAttributeData {
class LazyCAttrData {
internal Assembly assembly;
LazyCAttrData lazyData;
-#if NET_4_0
protected CustomAttributeData ()
{
}
-#endif
internal CustomAttributeData (ConstructorInfo ctorInfo, Assembly assembly, IntPtr data, uint data_length)
{
[ComVisible (true)]
public
-#if NET_4_0
virtual
-#endif
ConstructorInfo Constructor {
get {
return ctorInfo;
[ComVisible (true)]
public
-#if NET_4_0
virtual
-#endif
IList<CustomAttributeTypedArgument> ConstructorArguments {
get {
ResolveArguments ();
}
public
-#if NET_4_0
virtual
-#endif
IList<CustomAttributeNamedArgument> NamedArguments {
get {
ResolveArguments ();
return MonoCustomAttrs.GetCustomAttributesData (target);
}
+ internal static IList<CustomAttributeData> GetCustomAttributesInternal (RuntimeType target) {
+ return MonoCustomAttrs.GetCustomAttributesData (target);
+ }
+
public static IList<CustomAttributeData> GetCustomAttributes (Module target) {
return MonoCustomAttrs.GetCustomAttributesData (target);
}
return MonoCustomAttrs.GetCustomAttributesData (target);
}
-#if NET_4_5
public Type AttributeType {
get { return ctorInfo.DeclaringType; }
}
-#endif
public override string ToString ()
{
+ ResolveArguments ();
+
StringBuilder sb = new StringBuilder ();
sb.Append ("[" + ctorInfo.DeclaringType.FullName + "(");
public override int GetHashCode ()
{
- int ret = ctorInfo.GetHashCode () << 16;
+ int ret = ctorInfo == null ? 13 : (ctorInfo.GetHashCode () << 16);
// argument order-dependent
- for (int i = 0; i < ctorArgs.Count; i++)
- ret += ret ^ 7 + ctorArgs [i].GetHashCode () << (i * 4);
+ if (ctorArgs != null) {
+ for (int i = 0; i < ctorArgs.Count; i++) {
+ ret += ret ^ 7 + ctorArgs [i].GetHashCode () << (i * 4);
+ }
+ }
// argument order-independent
- for (int i = 0; i < namedArgs.Count; i++)
- ret += (namedArgs [i].GetHashCode () << 5);
+ if (namedArgs != null) {
+ for (int i = 0; i < namedArgs.Count; i++)
+ ret += (namedArgs [i].GetHashCode () << 5);
+ }
return ret;
}
}