Exemplo n.º 1
0
        protected void GenerateConstructors(ClassEmitter emitter, Type baseType, params FieldReference[] fields)
        {
            var constructors =
                baseType.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);

            var  ctorGenerationHook    = (ProxyGenerationOptions.Hook as IConstructorGenerationHook) ?? AllMethodsHook.Instance;
            bool defaultCtorConsidered = false;

            foreach (var constructor in constructors)
            {
                if (constructor.GetParameters().Length == 0)
                {
                    defaultCtorConsidered = true;
                }

                bool ctorVisible = IsConstructorVisible(constructor);
                var  analysis    = new ConstructorImplementationAnalysis(ctorVisible);
                var  impl        = ctorGenerationHook.GetConstructorImplementation(constructor, analysis);

                GenerateConstructor(emitter, constructor, impl, fields);
            }

            if (!defaultCtorConsidered)
            {
                GenerateConstructor(emitter, null, ctorGenerationHook.DefaultConstructorImplementation, fields);
            }
        }
Exemplo n.º 2
0
 public ProxyConstructorImplementation GetConstructorImplementation(ConstructorInfo constructorInfo, ConstructorImplementationAnalysis analysis)
 {
     return(myMockConstructors ? ProxyConstructorImplementation.DoNotCallBase
                             : analysis.IsBaseVisible?ProxyConstructorImplementation.CallBase
            : ProxyConstructorImplementation.SkipConstructor);
 }
Exemplo n.º 3
0
		protected void GenerateConstructors(ClassEmitter emitter, Type baseType, params FieldReference[] fields)
		{
			var constructors =
				baseType.GetConstructors(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic);

            var ctorGenerationHook = (ProxyGenerationOptions.Hook as IConstructorGenerationHook) ?? AllMethodsHook.Instance;

		    bool defaultCtorConsidered = false;
			foreach (var constructor in constructors)
			{
                if (constructor.GetParameters().Length == 0)
                    defaultCtorConsidered = true;

			    bool ctorVisible = IsConstructorVisible(constructor);
			    var analysis = new ConstructorImplementationAnalysis(ctorVisible);
			    var impl = ctorGenerationHook.GetConstructorImplementation(constructor, analysis);

				GenerateConstructor(emitter, constructor, impl, fields);
			}

            if (!defaultCtorConsidered)
            {
                GenerateConstructor(emitter, null, ctorGenerationHook.DefaultConstructorImplementation, fields);
            }
		}