예제 #1
0
        private void writeResolverCodeFile(ServiceGraph serviceGraph, string path, GeneratedInstance instance,
                                           FileSystem system, Dictionary <string, string> typenames)
        {
            var assembly = serviceGraph.ToGeneratedAssembly(Namespace);

            var(className, code) = instance.GenerateResolverClassCode(assembly);

            system.WriteStringToFile(Path.Combine(path, className + ".cs"), code);

            typenames.Add(className, Namespace + "." + className);
        }
예제 #2
0
        private void writeResolverLoaderClass(ServiceGraph serviceGraph, string path, Dictionary <string, string> typenames,
                                              FileSystem system)
        {
            var resolverAssembly = serviceGraph.ToGeneratedAssembly(Namespace);
            var resolverType     = resolverAssembly.AddType(ResolverLoaderClassName, typeof(IResolverLoader));
            var method           = resolverType.MethodFor(nameof(IResolverLoader.ResolverTypes));

            method.Frames.Add(new ResolverDictFrame(typenames));

            var resolverCode = resolverAssembly.GenerateCode();

            system.WriteStringToFile(Path.Combine(path, ResolverLoaderClassName + ".cs"), resolverCode);
        }