Beispiel #1
0
        private void ImportRuntimeModuleDictionary(ModuleDefinition module, TypeReference tDict)
        {
            var tFuncOfModule = FuncOfT.MakeGenericInstanceType(RuntimeModule);
            var tModuleDict   = tDict.MakeGenericInstanceType(Type, tFuncOfModule);

            DictionaryOfTypeToModuleFn     = module.Import(tModuleDict);
            DictionaryOfTypeToModuleFn_New =
                module.Import(tModuleDict.Resolve()
                              .GetDefaultConstructor())
                .MakeHostInstanceGeneric(Type, tFuncOfModule);
            DictionaryOfTypeToModuleFn_Add =
                module.Import(tModuleDict.Resolve().GetMethod("Add")).MakeHostInstanceGeneric(Type, tFuncOfModule);
            DictionaryOfTypeToModuleFn_TryGetValue =
                module.Import(tModuleDict.Resolve().GetMethod("TryGetValue"))
                .MakeHostInstanceGeneric(Type, tFuncOfModule);
        }
Beispiel #2
0
        private void ImportInjectBindingDictionary(ModuleDefinition module, TypeReference tDict)
        {
            var tFuncOfBinding           = FuncOfT.MakeGenericInstanceType(Binding);
            var tDictOfStringToBindingFn = tDict.MakeGenericInstanceType(
                String, tFuncOfBinding);

            DictionaryOfStringToBindingFn     = tDictOfStringToBindingFn;
            DictionaryOfStringToBindingFn_New =
                module.Import(
                    tDictOfStringToBindingFn.Resolve()
                    .Methods
                    .First(
                        c =>
                        c.Name == ".ctor" &&
                        c.Parameters.Count == 1 &&
                        c.Parameters[0].ParameterType.Name.StartsWith("IEqualityComparer")))
                .MakeHostInstanceGeneric(String, tFuncOfBinding);
            DictionaryOfStringToBindingFn_Add =
                module.Import(tDictOfStringToBindingFn.Resolve().GetMethod("Add"))
                .MakeHostInstanceGeneric(String, tFuncOfBinding);
            DictionaryOfStringToBindingFn_TryGetValue =
                module.Import(tDictOfStringToBindingFn.Resolve().GetMethod("TryGetValue"))
                .MakeHostInstanceGeneric(String, tFuncOfBinding);
        }