public override void VisitTypeReferenceCollection (TypeReferenceCollection refs)
		{
			foreach (TypeReference tr in refs) {
				if ((tr.Module.Assembly.Name.Name != Context.ExternalAssemblyName) && GetTypeReference (tr, false) == null)
					AddTypeReference (tr);
			}
		}
		public override void VisitTypeReferenceCollection (TypeReferenceCollection refs)
		{
			foreach (TypeReference tr in refs) {
				if (GetTypeReference (tr, false) == null)
					AddTypeReference (tr);
			}
		}
        internal ModuleDefinition(string name, AssemblyDefinition asm, StructureReader reader, bool main) : base(name)
        {
            if (asm == null)
            {
                throw new ArgumentNullException("asm");
            }
            if (name == null || name.Length == 0)
            {
                throw new ArgumentNullException("name");
            }

            m_asm  = asm;
            m_main = main;
#if !CF_1_0
            m_mvid = Guid.NewGuid();
#endif
            if (reader != null)
            {
                m_image        = reader.Image;
                m_imgReader    = reader.ImageReader;
                m_manifestOnly = reader.ManifestOnly;
            }
            else
            {
                m_image = Image.CreateImage();
            }

            m_modRefs = new ModuleReferenceCollection(this);
            m_asmRefs = new AssemblyNameReferenceCollection(this);
            m_res     = new ResourceCollection(this);
            m_types   = new TypeDefinitionCollection(this);
            m_types.OnTypeDefinitionAdded   += new TypeDefinitionEventHandler(OnTypeDefinitionAdded);
            m_types.OnTypeDefinitionRemoved += new TypeDefinitionEventHandler(OnTypeDefinitionRemoved);
            m_refs = new TypeReferenceCollection(this);
            m_refs.OnTypeReferenceAdded   += new TypeReferenceEventHandler(OnTypeReferenceAdded);
            m_refs.OnTypeReferenceRemoved += new TypeReferenceEventHandler(OnTypeReferenceRemoved);
            m_members = new MemberReferenceCollection(this);

            m_controller = new ReflectionController(this);
        }
Пример #4
0
 public virtual void VisitTypeReferenceCollection(TypeReferenceCollection refs)
 {
 }
		public TypeReference GetTypeReference (TypeReferenceCollection members, TypeReference member)
		{
			foreach (TypeReference mr in members) {
				if ((mr.FullName == member.FullName) &&
					((mr.DeclaringType == null && member.DeclaringType == null)
					||
					(mr.DeclaringType != null && member.DeclaringType != null
					&& mr.DeclaringType.FullName == member.DeclaringType.FullName)))

					return mr;
			}
			return null;
		}
Пример #6
0
        public override void VisitTypeReferenceCollection(TypeReferenceCollection refs)
        {
            ArrayList orderedTypeRefs = new ArrayList (refs.Count);
            foreach (TypeReference tr in refs)
                orderedTypeRefs.Add (tr);

            orderedTypeRefs.Sort (TableComparers.TypeRef.Instance);

            TypeRefTable trTable = m_tableWriter.GetTypeRefTable ();
            foreach (TypeReference t in orderedTypeRefs) {
                MetadataToken scope;

                if (t.Module.Assembly != m_mod.Assembly)
                    throw new ReflectionException ("A type as not been correctly imported");

                if (t.Scope == null)
                    continue;

                if (t.DeclaringType != null)
                    scope = new MetadataToken (TokenType.TypeRef, GetRidFor (t.DeclaringType));
                else if (t.Scope is AssemblyNameReference)
                    scope = new MetadataToken (TokenType.AssemblyRef,
                        GetRidFor ((AssemblyNameReference) t.Scope));
                else if (t.Scope is ModuleDefinition)
                    scope = new MetadataToken (TokenType.Module,
                        GetRidFor ((ModuleDefinition) t.Scope));
                else if (t.Scope is ModuleReference)
                    scope = new MetadataToken (TokenType.ModuleRef,
                        GetRidFor ((ModuleReference) t.Scope));
                else
                    scope = new MetadataToken (TokenType.ExportedType, 0);

                TypeRefRow trRow = m_rowWriter.CreateTypeRefRow (
                    scope,
                    m_mdWriter.AddString (t.Name),
                    m_mdWriter.AddString (t.Namespace));

                trTable.Rows.Add (trRow);
                t.MetadataToken = new MetadataToken (TokenType.TypeRef, (uint) trTable.Rows.Count);
            }
        }
        public virtual void VisitTypeReferenceCollection(TypeReferenceCollection refs)
        {

        }
Пример #8
0
        internal ModuleDefinition(string name, AssemblyDefinition asm, StructureReader reader, bool main)
            : base(name)
        {
            if (asm == null)
                throw new ArgumentNullException ("asm");
            if (name == null || name.Length == 0)
                throw new ArgumentNullException ("name");

            m_asm = asm;
            m_main = main;
            #if !CF_1_0
            m_mvid = Guid.NewGuid ();
            #endif
            if (reader != null) {
                m_image = reader.Image;
                m_imgReader = reader.ImageReader;
                m_manifestOnly = reader.ManifestOnly;
            } else
                m_image = Image.CreateImage ();

            m_modRefs = new ModuleReferenceCollection (this);
            m_asmRefs = new AssemblyNameReferenceCollection (this);
            m_res = new ResourceCollection (this);
            m_types = new TypeDefinitionCollection (this);
            m_types.OnTypeDefinitionAdded += new TypeDefinitionEventHandler (OnTypeDefinitionAdded);
            m_types.OnTypeDefinitionRemoved += new TypeDefinitionEventHandler (OnTypeDefinitionRemoved);
            m_refs = new TypeReferenceCollection (this);
            m_refs.OnTypeReferenceAdded += new TypeReferenceEventHandler (OnTypeReferenceAdded);
            m_refs.OnTypeReferenceRemoved += new TypeReferenceEventHandler (OnTypeReferenceRemoved);
            m_members = new MemberReferenceCollection (this);

            m_controller = new ReflectionController (this);
        }
 public virtual void VisitTypeReferenceCollection(TypeReferenceCollection refs)
 {
     foreach (TypeReference type in refs)
     {
         VisitTypeReference(type);
     }
 }
		static void CheckTypeReferenceDuplicates (TypeReferenceCollection references)
		{
			List<string> names = new List<string> ();
			foreach (TypeReference reference in references) {
				Assert.IsFalse (names.Contains (reference.FullName));
				names.Add (reference.FullName);
			}
		}