Example #1
0
 private static string GenerateSourceForAssembly(Assembly grainAssembly, LogLevel logLevel)
 {
     using (var loggerFactory = new LoggerFactory())
     {
         var config = new ClusterConfiguration();
         loggerFactory.AddConsole(logLevel);
         var serializationProviderOptions = Options.Create(
             new SerializationProviderOptions
         {
             SerializationProviders        = config.Globals.SerializationProviders,
             FallbackSerializationProvider = config.Globals.FallbackSerializationProvider
         });
         var applicationPartManager = new ApplicationPartManager();
         applicationPartManager.AddFeatureProvider(new BuiltInTypesSerializationFeaturePopulator());
         applicationPartManager.AddFeatureProvider(new AssemblyAttributeFeatureProvider <GrainInterfaceFeature>());
         applicationPartManager.AddFeatureProvider(new AssemblyAttributeFeatureProvider <GrainClassFeature>());
         applicationPartManager.AddFeatureProvider(new AssemblyAttributeFeatureProvider <SerializerFeature>());
         applicationPartManager.AddApplicationPart(grainAssembly);
         applicationPartManager.AddApplicationPart(typeof(RuntimeVersion).Assembly);
         applicationPartManager.AddApplicationPartsFromReferences(grainAssembly);
         applicationPartManager.AddApplicationPartsFromReferences(typeof(RuntimeVersion).Assembly);
         var serializationManager = new SerializationManager(null, serializationProviderOptions, loggerFactory, new CachedTypeResolver());
         serializationManager.RegisterSerializers(applicationPartManager);
         var codeGenerator = new RoslynCodeGenerator(serializationManager, applicationPartManager, loggerFactory);
         return(codeGenerator.GenerateSourceForAssembly(grainAssembly));
     }
 }