public ImportedTypeParameterDefinition (MetaType type, MetadataImporter importer) : base (type, importer) { }
public ImportedMethodDefinition (MethodBase provider, TypeSpec type, AParametersCollection parameters, MetadataImporter importer) : base (provider, type, parameters, importer) { }
public ImportedGenericMethodDefinition (MethodInfo provider, TypeSpec type, AParametersCollection parameters, TypeParameterSpec[] tparams, MetadataImporter importer) : base (provider, type, parameters, importer) { this.tparams = tparams; }
public ImportedParameterMemberDefinition (PropertyInfo provider, TypeSpec type, AParametersCollection parameters, MetadataImporter importer) : base (provider, type, importer) { this.parameters = parameters; }
protected ImportedParameterMemberDefinition (MethodBase provider, TypeSpec type, AParametersCollection parameters, MetadataImporter importer) : base (provider, type, importer) { this.parameters = parameters; }
public ImportedMemberDefinition (MemberInfo member, TypeSpec type, MetadataImporter importer) : base (member, importer) { this.type = type; }
protected ImportedDefinition (MemberInfo provider, MetadataImporter importer) { this.provider = provider; this.importer = importer; }
public static AttributesBag Read (MemberInfo mi, MetadataImporter importer) { AttributesBag bag = null; List<string> conditionals = null; // It should not throw any loading exception IList<CustomAttributeData> attrs = CustomAttributeData.GetCustomAttributes (mi); foreach (var a in attrs) { var dt = a.Constructor.DeclaringType; string name = dt.Name; if (name == "ObsoleteAttribute") { if (dt.Namespace != "System") continue; if (bag == null) bag = new AttributesBag (); var args = a.ConstructorArguments; if (args.Count == 1) { bag.Obsolete = new ObsoleteAttribute ((string) args[0].Value); } else if (args.Count == 2) { bag.Obsolete = new ObsoleteAttribute ((string) args[0].Value, (bool) args[1].Value); } else { bag.Obsolete = new ObsoleteAttribute (); } continue; } if (name == "ConditionalAttribute") { if (dt.Namespace != "System.Diagnostics") continue; if (bag == null) bag = new AttributesBag (); if (conditionals == null) conditionals = new List<string> (2); conditionals.Add ((string) a.ConstructorArguments[0].Value); continue; } if (name == "CLSCompliantAttribute") { if (dt.Namespace != "System") continue; if (bag == null) bag = new AttributesBag (); bag.CLSAttributeValue = (bool) a.ConstructorArguments[0].Value; continue; } // Type only attributes if (mi.MemberType == MemberTypes.TypeInfo || mi.MemberType == MemberTypes.NestedType) { if (name == "DefaultMemberAttribute") { if (dt.Namespace != "System.Reflection") continue; if (bag == null) bag = new AttributesBag (); bag.DefaultIndexerName = (string) a.ConstructorArguments[0].Value; continue; } if (name == "AttributeUsageAttribute") { if (dt.Namespace != "System") continue; if (HasMissingType (a.Constructor)) continue; if (bag == null) bag = new AttributesBag (); bag.AttributeUsage = new AttributeUsageAttribute ((AttributeTargets) a.ConstructorArguments[0].Value); foreach (var named in a.NamedArguments) { if (named.MemberInfo.Name == "AllowMultiple") bag.AttributeUsage.AllowMultiple = (bool) named.TypedValue.Value; else if (named.MemberInfo.Name == "Inherited") bag.AttributeUsage.Inherited = (bool) named.TypedValue.Value; } continue; } // Interface only attribute if (name == "CoClassAttribute") { if (dt.Namespace != "System.Runtime.InteropServices") continue; if (HasMissingType (a.Constructor)) continue; if (bag == null) bag = new AttributesBag (); bag.CoClass = importer.ImportType ((MetaType) a.ConstructorArguments[0].Value); continue; } } } if (bag == null) return Default; if (conditionals != null) bag.Conditionals = conditionals.ToArray (); return bag; }