コード例 #1
0
 public IAssembly CreateMockAssembly(params Type[] include)
 {
     IAssembly assembly = _mocks.DynamicMock<IAssembly>();
       TypeDefinitionCollection mockTypes = new TypeDefinitionCollection(TestingAssembly.MainModule);
       foreach (TypeDefinition type in TestingAssembly.MainModule.Types)
       {
     foreach (Type reflected in include)
     {
       if (reflected.FullName == type.FullName)
       {
     mockTypes.Add(type.Clone());
       }
     }
       }
       SetupResult.For(assembly.Types).Return(mockTypes);
       return assembly;
 }
コード例 #2
0
        public override void VisitTypeDefinitionCollection(TypeDefinitionCollection types)
        {
            TypeDefTable tdTable = m_tableWriter.GetTypeDefTable ();

            if (types [Constants.ModuleType] == null)
                types.Add (new TypeDefinition (
                        Constants.ModuleType, string.Empty, TypeAttributes.NotPublic));

            foreach (TypeDefinition t in types)
                m_typeDefStack.Add (t);

            (m_typeDefStack as ArrayList).Sort (TableComparers.TypeDef.Instance);

            for (int i = 0; i < m_typeDefStack.Count; i++) {
                TypeDefinition t = (TypeDefinition) m_typeDefStack [i];
                if (t.Module.Assembly != m_mod.Assembly)
                    throw new ReflectionException ("A type as not been correctly imported");

                t.MetadataToken = new MetadataToken (TokenType.TypeDef, (uint) (i + 1));
            }

            foreach (TypeDefinition t in m_typeDefStack) {
                TypeDefRow tdRow = m_rowWriter.CreateTypeDefRow (
                    t.Attributes,
                    m_mdWriter.AddString (t.Name),
                    m_mdWriter.AddString (t.Namespace),
                    GetTypeDefOrRefToken (t.BaseType),
                    0,
                    0);

                tdTable.Rows.Add (tdRow);
            }
        }
コード例 #3
0
ファイル: ReflectionReader.cs プロジェクト: contra/DotNOS
        public override void VisitTypeDefinitionCollection(TypeDefinitionCollection types)
        {
            // type def reading
            TypeDefTable typesTable = m_tableReader.GetTypeDefTable ();
            m_typeDefs = new TypeDefinition [typesTable.Rows.Count];
            for (int i = 0; i < typesTable.Rows.Count; i++) {
                TypeDefRow type = typesTable [i];
                TypeDefinition t = new TypeDefinition (
                    m_root.Streams.StringsHeap [type.Name],
                    m_root.Streams.StringsHeap [type.Namespace],
                    type.Flags);
                t.MetadataToken = MetadataToken.FromMetadataRow (TokenType.TypeDef, i);

                m_typeDefs [i] = t;
            }

            // nested types
            if (m_tHeap.HasTable (NestedClassTable.RId)) {
                NestedClassTable nested = m_tableReader.GetNestedClassTable ();
                for (int i = 0; i < nested.Rows.Count; i++) {
                    NestedClassRow row = nested [i];

                    TypeDefinition parent = GetTypeDefAt (row.EnclosingClass);
                    TypeDefinition child = GetTypeDefAt (row.NestedClass);

                    if (!IsDeleted (child))
                        parent.NestedTypes.Add (child);
                }
            }

            foreach (TypeDefinition type in m_typeDefs)
                if (!IsDeleted (type))
                    types.Add (type);

            // type ref reading
            if (m_tHeap.HasTable (TypeRefTable.RId)) {
                TypeRefTable typesRef = m_tableReader.GetTypeRefTable ();

                m_typeRefs = new TypeReference [typesRef.Rows.Count];

                for (int i = 0; i < typesRef.Rows.Count; i++)
                    AddTypeRef (typesRef, i);
            } else
                m_typeRefs = new TypeReference [0];

            ReadTypeSpecs ();
            ReadMethodSpecs ();

            ReadMethods ();
            ReadGenericParameters ();

            // set base types
            for (int i = 0; i < typesTable.Rows.Count; i++) {
                TypeDefRow type = typesTable [i];
                TypeDefinition child = m_typeDefs [i];
                child.BaseType = GetTypeDefOrRef (type.Extends, new GenericContext (child));
            }

            CompleteMethods ();
            ReadAllFields ();
            ReadMemberReferences ();
        }
コード例 #4
0
        public override void VisitTypeDefinitionCollection(TypeDefinitionCollection types)
        {
            // type def reading
            TypeDefTable typesTable = m_tableReader.GetTypeDefTable();

            m_typeDefs = new TypeDefinition [typesTable.Rows.Count];
            for (int i = 0; i < typesTable.Rows.Count; i++)
            {
                TypeDefRow     type = typesTable [i];
                TypeDefinition t    = new TypeDefinition(
                    m_root.Streams.StringsHeap [type.Name],
                    m_root.Streams.StringsHeap [type.Namespace],
                    type.Flags);
                t.MetadataToken = MetadataToken.FromMetadataRow(TokenType.TypeDef, i);

                m_typeDefs [i] = t;
            }

            // nested types
            if (m_tHeap.HasTable(NestedClassTable.RId))
            {
                NestedClassTable nested = m_tableReader.GetNestedClassTable();
                for (int i = 0; i < nested.Rows.Count; i++)
                {
                    NestedClassRow row = nested [i];

                    TypeDefinition parent = GetTypeDefAt(row.EnclosingClass);
                    TypeDefinition child  = GetTypeDefAt(row.NestedClass);

                    parent.NestedTypes.Add(child);
                }
            }

            foreach (TypeDefinition type in m_typeDefs)
            {
                types.Add(type);
            }

            // type ref reading
            if (m_tHeap.HasTable(TypeRefTable.RId))
            {
                TypeRefTable typesRef = m_tableReader.GetTypeRefTable();

                m_typeRefs = new TypeReference [typesRef.Rows.Count];

                for (int i = 0; i < typesRef.Rows.Count; i++)
                {
                    AddTypeRef(typesRef, i);
                }
            }
            else
            {
                m_typeRefs = new TypeReference [0];
            }

            ReadTypeSpecs();
            ReadMethodSpecs();

            ReadMethods();
            ReadGenericParameters();

            // set base types
            for (int i = 0; i < typesTable.Rows.Count; i++)
            {
                TypeDefRow     type  = typesTable [i];
                TypeDefinition child = m_typeDefs [i];
                child.BaseType = GetTypeDefOrRef(type.Extends, new GenericContext(child));
            }

            CompleteMethods();
            ReadAllFields();
            ReadMemberReferences();
        }