private static Type CreateWeakProviderType() { var assembly = new DynamicAssembly(); var dynamicType = assembly.DynamicType("WeakProviderFactory").HasBaseClass(typeof(DbProviderFactory)); dynamicType.CtorAccess = MemberAccess.Public; dynamicType.Field("Instance").HasType(dynamicType).IsStatic().IsInstance(); var compiledAssembly = assembly.Compile(new AssemblyName("ProviderAssembly")); // We need this so that Type.GetType() used in DbProviderFactories.GetFactory will work for // the dynamic assembly. In other words, this is only needed for the test code to work. AppDomain.CurrentDomain.AssemblyResolve += (sender, args) => args.Name.StartsWith("ProviderAssembly") ? compiledAssembly : null; return assembly.GetType("WeakProviderFactory"); }