protected override void Generate( CodeWriter writer, DependencyInjectionDescriptor descriptor, out string fileName, out string?path) { fileName = CreateServiceCollectionExtensions(descriptor.Name); path = DependencyInjection; ClassBuilder factory = ClassBuilder .New(fileName) .SetStatic() .SetAccessModifier(AccessModifier.Public); MethodBuilder addClientMethod = factory .AddMethod($"Add{descriptor.Name}") .SetPublic() .SetStatic() .SetReturnType( TypeNames.IClientBuilder.WithGeneric(descriptor.StoreAccessor.RuntimeType)) .AddParameter( _services, x => x.SetThis().SetType(TypeNames.IServiceCollection)) .AddParameter( _strategy, x => x.SetType(TypeNames.ExecutionStrategy) .SetDefault(TypeNames.ExecutionStrategy + "." + "NetworkOnly")) .AddCode(GenerateMethodBody(descriptor)); if (descriptor.TransportProfiles.Count > 1) { addClientMethod .AddParameter(_profile) .SetType(CreateProfileEnumReference(descriptor)) .SetDefault(CreateProfileEnumReference(descriptor) + "." + descriptor.TransportProfiles[0].Name); } foreach (var profile in descriptor.TransportProfiles) { GenerateClientForProfile(factory, descriptor, profile); } factory.AddClass(_clientServiceProvider); CodeFileBuilder .New() .SetNamespace(TypeNames.DependencyInjectionNamespace) .AddType(factory) .Build(writer); }
public static ClassBuilder Add(string name) => ClassBuilder.AddClass(name);