C# Class Stiletto.Fody.Generators.LoaderGenerator

Inheritance: Generator
Exibir arquivo Open project: benjamin-bader/stiletto

Public Methods

Method Description
Generate ( IErrorReporter errorReporter ) : Mono.Cecil.TypeDefinition

Generates an ILoader implementation that provides the given inject bindings, lazy bindings, provider bindings, and modules, at runtime.

The idea here is that we have a key and constructor methodref for all generated types; we can just wrap each methodref in a so-called factory function and maintain dictionaries of keys to factory Funcs; at runtime, either the proper Func is looked up and returned or the lookup fails null is returned, passing the job off to other loaders.

GetKeyedCtor ( ) : KeyedCtor
LoaderGenerator ( Mono.Cecil.ModuleDefinition moduleDefinition, References references, IEnumerable injectBindingCtors, IEnumerable lazyBindingCtors, IEnumerable providerBindingCtors, MethodReference>.IEnumerable runtimeModuleCtors ) : System
Validate ( IErrorReporter errorReporter ) : void

Private Methods

Method Description
AddFactoryToDict ( Mono.Cecil.Cil.ILProcessor il, string key, MethodReference factory, FieldReference field, MethodReference fnCtor, MethodReference addFn ) : void
EmitCtor ( ) : void
EmitGetIProviderInjectBinding ( ) : void
EmitGetInjectBinding ( ) : void
EmitGetLazyInjectBinding ( ) : void
EmitGetRuntimeModule ( ) : void
EmitInjectFactory ( MethodReference ctor ) : Mono.Cecil.MethodDefinition
EmitLazyFactory ( MethodReference ctor ) : Mono.Cecil.MethodDefinition
EmitModuleFactory ( MethodReference ctor ) : Mono.Cecil.MethodDefinition
EmitProviderFactory ( MethodReference ctor ) : Mono.Cecil.MethodDefinition
GetFnMethods ( TypeReference tFn ) : Tuple

Method Details

Generate() public method

Generates an ILoader implementation that provides the given inject bindings, lazy bindings, provider bindings, and modules, at runtime.
The idea here is that we have a key and constructor methodref for all generated types; we can just wrap each methodref in a so-called factory function and maintain dictionaries of keys to factory Funcs; at runtime, either the proper Func is looked up and returned or the lookup fails null is returned, passing the job off to other loaders.
public Generate ( IErrorReporter errorReporter ) : Mono.Cecil.TypeDefinition
errorReporter IErrorReporter
return Mono.Cecil.TypeDefinition

GetKeyedCtor() public method

public GetKeyedCtor ( ) : KeyedCtor
return KeyedCtor

LoaderGenerator() public method

public LoaderGenerator ( Mono.Cecil.ModuleDefinition moduleDefinition, References references, IEnumerable injectBindingCtors, IEnumerable lazyBindingCtors, IEnumerable providerBindingCtors, MethodReference>.IEnumerable runtimeModuleCtors ) : System
moduleDefinition Mono.Cecil.ModuleDefinition
references References
injectBindingCtors IEnumerable
lazyBindingCtors IEnumerable
providerBindingCtors IEnumerable
runtimeModuleCtors MethodReference>.IEnumerable
return System

Validate() public method

public Validate ( IErrorReporter errorReporter ) : void
errorReporter IErrorReporter
return void