static void Main(string[] args) { // Aplicando o DIP, estamos invertendo a dependência, já que dentro de ClientBO // contém apenas uma abstração do comportamento de ClientRepository e estamos também // invertendo o controle, pois ele é fornecido de fora da classe. ClientV2 ClientV2 = new ClientV2 { Name = "Zézinho" }; ClientV2BO ClientV2Business = new ClientV2BO(new ClientV2Repository()); ClientV2Business.SaveClientV2(ClientV2); }
public void SaveClientV2(ClientV2 ClientV2) { _ClientV2Repository.Save(ClientV2); }
public static void Main(string[] args) { var stopWatch = new Stopwatch(); stopWatch.Start(); var cmd = new CommandLineApplication(); var helpOption = cmd.HelpOption("-? | -help"); var argType = cmd.Option("-type <value>", "Type of writer (default \"CLIENT_CSHARP_V1\"; CLIENT_CSHARP_V1, CLIENT_CSHARP_V2)", CommandOptionType.SingleValue); var argThreadsCount = cmd.Option("-threadsCount <value>", "how much Thread use to write into InfluxDB", CommandOptionType.SingleValue); var argSecondsCount = cmd.Option("-secondsCount <value>", "how long write into InfluxDB", CommandOptionType.SingleValue); var argLineProtocolsCount = cmd.Option("-lineProtocolsCount <value>", "how much data writes in one batch", CommandOptionType.SingleValue); var argMeasurementName = cmd.Option("-measurementName <value>", "target measurement name", CommandOptionType.SingleValue); var argSkipCount = cmd.Option("-skipCount", "skip query count records on end of the benchmark", CommandOptionType.NoValue); var argInfluxDb1 = cmd.Option("-influxDb1 <value>", "URL of InfluxDB v1; default: 'http://localhost:8086'", CommandOptionType.SingleValue); var argInfluxDb2 = cmd.Option("-influxDb2 <value>", "URL of InfluxDB v2; default: 'http://localhost:9999'", CommandOptionType.SingleValue); var bufferSize = cmd.Option("-batchSize", "batch size", CommandOptionType.SingleValue); var flushInterval = cmd.Option("-flushInterval", "flush interval", CommandOptionType.SingleValue); AbstractIotWriter writer = null; cmd.OnExecute(async() => { var type = GetOptionValue(argType, "CLIENT_CSHARP_V2"); Console.ForegroundColor = ConsoleColor.Blue; Console.WriteLine(); Console.WriteLine("------------- " + type + " -------------"); Console.WriteLine(); Console.ResetColor(); InfluxDbUrl = GetOptionValue(argInfluxDb1, "http://localhost:8086"); InfluxDb2Url = GetOptionValue(argInfluxDb2, "http://localhost:9999"); if (argInfluxDb1.HasValue()) { WriteDestination(InfluxDbUrl); } if (argInfluxDb2.HasValue()) { WriteDestination(InfluxDb2Url); } try { if (type.Equals("CLIENT_CSHARP_V1")) { writer = new ClientV1(cmd.Options); } else if (type.Equals("CLIENT_CSHARP_V2")) { writer = new ClientV2(cmd.Options); } else if (type.Equals("CLIENT_CSHARP_EMPTY")) { writer = new NullWritter(cmd.Options); } else { throw new CommandParsingException(cmd, "The: " + type + " is not supported"); } await writer.Start(); writer.Verify(); } catch (CommandParsingException e) { Console.WriteLine(e); } return(0); }); cmd.Execute(args); stopWatch.Stop(); Console.WriteLine(); Console.WriteLine("Total time: " + stopWatch.Elapsed); Console.WriteLine("-------------------------------------"); }
public DepInjector() { #region Creating Catalog and Client objectys // Implements ICreateReadUpdateDelete CatalogV1 <T> catalogV1 = new CatalogV1 <T>(); // Implements ICreate, IRead, IUpdate, IDelete CatalogV2 <T> catalogV2 = new CatalogV2 <T>(); // OK, since catalogV1 implements ICreateReadUpdateDelete ClientV1 <T> clientV1catV1 = new ClientV1 <T>(catalogV1); // NOT OK, since catalogV2 doesn't implement ICreateReadUpdateDelete // ClientV1<T> clientV1catV2 = new ClientV1<T>(catalogV2); // NOT OK, since catalogV1 doesn't implement IDelete // ClientV2<T> clientV2catV1 = new ClientV2<T>(catalogV1); // OK, since catalogV2 implements IDelete ClientV2 <T> clientV2catV2 = new ClientV2 <T>(catalogV2); #endregion #region Using the Delete decorator // NOT OK,since catalogV1 doesn't implement IDelete // DeleteWithConfirmImpl<T> deleteImplV1 = new DeleteWithConfirmImpl<T>(catalogV1); // OK, since catalogV2 implements IDelete DeleteWithConfirmImpl <T> deleteImplV2 = new DeleteWithConfirmImpl <T>(catalogV2); // OK, since deleteImpl implements IDelete ClientV2 <T> clientV2deleteImpl = new ClientV2 <T>(deleteImplV2); #endregion #region Creating Adapted Catalog objects // OK, since AdaptedCatalog constructor takes no parameters AdaptedCatalog <T> adapCat = new AdaptedCatalog <T>(); // OK... but no way to "decorate" catalog implementation ClientV1 <T> clientV1adapCat = new ClientV1 <T>(adapCat); #endregion #region Creating Decorated Catalog objects // NOT OK, since catalogV1 doesn't implement ICreate, IRead, IUpdate, IDelete // DecoratedCatalog<T> confCatalogV1 = new DecoratedCatalog<T>(catalogV1, catalogV1, catalogV1, catalogV1); // OK, since catalogV2 implements ICreate, IRead, IUpdate, IDelete DecoratedCatalog <T> decoCatalog = new DecoratedCatalog <T>(catalogV2, catalogV2, catalogV2, catalogV2); // ALSO OK; since catalogV2 implements ICreate, IRead, IUpdate, and deleteImpl implements IDelete DecoratedCatalog <T> decoCatalogMixed = new DecoratedCatalog <T>(catalogV2, catalogV2, catalogV2, deleteImplV2); #endregion #region Using Decorated Catalog objects // OK, since decoCatalogV2 implements ICreateReadUpdateDelete ClientV1 <T> clientV1decoCatV2 = new ClientV1 <T>(decoCatalog); // ALSO OK, since decoCatalogMixed implements ICreateReadUpdateDelete ClientV1 <T> clientV1decoCatMixed = new ClientV1 <T>(decoCatalogMixed); #endregion }
public void Save(ClientV2 ClientV2) { //acesso ao banco }