use singleton for helpers

This commit is contained in:
Ryan Peters 2020-10-14 17:57:39 -04:00
parent 86d6fdb5dd
commit e1b74a36a0
5 changed files with 21 additions and 10 deletions

View File

@ -50,13 +50,14 @@ namespace COA.EnterpriseServices.DataAccess
// load data access based on active configuration // load data access based on active configuration
return Dependencies.Container return Dependencies.Container
.GetAllInstances<IDataAccess<T>>() .GetAllInstances<IDataAccess<T>>()
.Where(i => .Select(i => new
{ {
var dataAccessType = i.GetType().FullName; Instance = i,
Type = i.GetType()
return enabledDataAccess.ContainsKey(type.FullName) && enabledDataAccess[type.FullName].Any(a => dataAccessType.StartsWith(a));
}) })
.OrderBy(i => i.GetType().Name.StartsWith("QuickBase", StringComparison.OrdinalIgnoreCase)) .Where(i => enabledDataAccess.ContainsKey(type.FullName) && enabledDataAccess[type.FullName].Any(a => i.Type.FullName.StartsWith(a)))
.OrderBy(i => i.Type.Name.StartsWith("QuickBase", StringComparison.OrdinalIgnoreCase))
.Select(i => i.Instance)
.ToList(); .ToList();
} }
} }

View File

@ -1,4 +1,5 @@
using StructureMap; using COA.EnterpriseServices.DataAccess.Helpers;
using StructureMap;
namespace COA.EnterpriseServices.DataAccess namespace COA.EnterpriseServices.DataAccess
{ {
@ -18,6 +19,9 @@ namespace COA.EnterpriseServices.DataAccess
s.WithDefaultConventions(); s.WithDefaultConventions();
s.AssembliesFromApplicationBaseDirectory(); s.AssembliesFromApplicationBaseDirectory();
}); });
c.For<ClientHelper>().Singleton();
c.For<CreditorHelper>().Singleton();
}); });
} }
} }

View File

@ -4,7 +4,7 @@ namespace COA.EnterpriseServices.DataAccess.Helpers
{ {
public class BaseHelper<T> where T : class, IRecord public class BaseHelper<T> where T : class, IRecord
{ {
protected DataAccessManager<T> DataAccessManager { get; } = new DataAccessManager<T>(); protected DataAccessManager<T> DataAccessManager { get; } = Dependencies.Container.GetInstance<DataAccessManager<T>>();
public virtual T Get(int id) => DataAccessManager.Invoke(d => d.Get(i => i.Id == id).FirstOrDefault()); public virtual T Get(int id) => DataAccessManager.Invoke(d => d.Get(i => i.Id == id).FirstOrDefault());

View File

@ -17,6 +17,11 @@ namespace COA.EnterpriseServices.DataAccess.Helpers
settlementAttemptDataAccess = Dependencies.Container.GetInstance<DataAccessManager<SettlementAttempt>>(); settlementAttemptDataAccess = Dependencies.Container.GetInstance<DataAccessManager<SettlementAttempt>>();
} }
public CreditorHelper()
{
}
public Creditor GetCreditor(int id) public Creditor GetCreditor(int id)
{ {
return creditorDataAccess.Invoke(d => d.Get(d => d.Id == id)?.FirstOrDefault()); return creditorDataAccess.Invoke(d => d.Get(d => d.Id == id)?.FirstOrDefault());

View File

@ -1,4 +1,5 @@
using COA.EnterpriseServices.DataAccess.Entities; using COA.EnterpriseServices.DataAccess;
using COA.EnterpriseServices.DataAccess.Entities;
using COA.EnterpriseServices.DataAccess.Helpers; using COA.EnterpriseServices.DataAccess.Helpers;
namespace COA.EnterpriseServices.Sandbox namespace COA.EnterpriseServices.Sandbox
@ -13,7 +14,7 @@ namespace COA.EnterpriseServices.Sandbox
private static void CreditorStuff() private static void CreditorStuff()
{ {
var creditorHelper = new CreditorHelper(); var creditorHelper = Dependencies.Container.GetInstance<CreditorHelper>();
// get single creditor // get single creditor
var singleCreditor = creditorHelper.GetCreditor(1); var singleCreditor = creditorHelper.GetCreditor(1);
@ -36,7 +37,7 @@ namespace COA.EnterpriseServices.Sandbox
private static void ClientStuff() private static void ClientStuff()
{ {
var clientHelper = new ClientHelper(); var clientHelper = Dependencies.Container.GetInstance<ClientHelper>();
var newClient = new Client var newClient = new Client
{ {