Exemple #1
0
        private static TypeBuilder createDynamicTypeBuilder(Type type, Type parent, Type[] interfaces)
        {
            if (ProxyDict.TryGetValue(type, out var info))
            {
                info.Count++;
            }
            else
            {
                ProxyDict[type] = info = new ProxyTypeInfo
                {
                    Count = 1
                };
            }

            var assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName(AssemblyName + type.Name),
                                                                        AssemblyBuilderAccess.Run);
            var moduleBuilder = assemblyBuilder.DefineDynamicModule(ModuleName + type.Name);

            return(info.TypeBuilder = moduleBuilder.DefineType(TypeName + type.Name + info.Count,
                                                               TypeAttributes.Public | TypeAttributes.Class, parent, interfaces));
        }
		public ProxyTypeInfo CreateClassProxyType(Type classToProxy, MocksRepository repository, MockCreationSettings settings, MockMixin mockMixinImpl)
		{
			var pgo = CreateProxyGenerationOptions(classToProxy, settings, mockMixinImpl);
			var typeInfo = new ProxyTypeInfo
			{
				ProxyType = generator.ProxyBuilder.CreateClassProxyType(classToProxy, Type.EmptyTypes, pgo)
			};
			typeInfo.Mixins.Add(typeof(IInterceptor), repository.Interceptor);
			foreach (var mixin in pgo.MixinData.MixinInterfaces)
			{
				typeInfo.Mixins.Add(mixin, pgo.MixinData.GetMixinInstance(mixin));
			}
			return typeInfo;
		}