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; }
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); } }
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 (); }
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(); }