Hi,
How can i register the below code using autofac?
public static IEntityComparisonManager<TEntity> GetInstance<TEntity>(int count = 1)
{
var type = typeof(TEntity);
if (type == typeof(ContractBasicDetail))
{
var applicant1ClientComparisonManager = ComparisonManagerFactory.GetInstance<ClientBasicDetail>(1);
var applicant2ClientComparisonManager = ComparisonManagerFactory.GetInstance<ClientBasicDetail>(2);
var affiliateComparisonManager = GetInstance<Affiliate>();
return new ContractBasicDetailsComparisonManager(
applicant1ClientComparisonManager,
applicant2ClientComparisonManager,
affiliateComparisonManager) as IEntityComparisonManager<TEntity>;
}
else if (type == typeof(LoanDetail))
{
var lendersComparisonManager = ComparisonManagerFactory.GetInstance<IEnumerable<LoanLender>>();
var loanRenewalComparisonManager = ComparisonManagerFactory.GetInstance<LoanRenewal>();
return new LoanDetailComparisonManager(
lendersComparisonManager,
loanRenewalComparisonManager) as IEntityComparisonManager<TEntity>;
}
else if (type == typeof(LoanAmount))
{
return new LoanAmountComparisonManager() as IEntityComparisonManager<TEntity>;
}
else if (type == typeof(LoanSettlement))
{
return new LoanSettlementComparisonManager() as IEntityComparisonManager<TEntity>;
}
else if (type == typeof(Affiliate))
{
return new AffiliateComparisonManager() as IEntityComparisonManager<TEntity>;
}
else if (type == typeof(ClientBasicDetail))
{
var nameComparisonManager = ComparisonManagerFactory.GetInstance<ClientName>();
var addressComparisonManager = ComparisonManagerFactory.GetInstance<IEnumerable<Address>>();
var phoneComparisonManager = ComparisonManagerFactory.GetInstance<IEnumerable<Phone>>();
var emailComparisonManager = ComparisonManagerFactory.GetInstance<IEnumerable<Email>>();
var employmentComparisonManager = ComparisonManagerFactory.GetInstance<ClientEmployment>();
if (count == 1)
{
return
new PrimaryClientBasicDetailComparisonManager(
nameComparisonManager,
addressComparisonManager,
phoneComparisonManager,
emailComparisonManager,
employmentComparisonManager) as IEntityComparisonManager<TEntity>;
}
else
{
return
new CoApplicantClientBasicDetailComparisonManager(
nameComparisonManager,
addressComparisonManager,
phoneComparisonManager,
emailComparisonManager,
employmentComparisonManager) as IEntityComparisonManager<TEntity>;
}
}
else if (type == typeof(ClientName))
{
return new ClientNameComparisonManager() as IEntityComparisonManager<TEntity>;
}
else if (type == typeof(ClientEmployment))
{
return new EmploymentComparisonManager() as IEntityComparisonManager<TEntity>;
}
else if (type == typeof(LoanRenewal))
{
return new LoanRenewalComparisonManager() as IEntityComparisonManager<TEntity>;
}
else if (typeof(IEnumerable<Address>).IsAssignableFrom(type))
{
return new AddressComparisonManager() as IEntityComparisonManager<TEntity>;
}
else if (typeof(IEnumerable<Phone>).IsAssignableFrom(type))
{
return new PhoneComparisonManager() as IEntityComparisonManager<TEntity>;
}
else if (typeof(IEnumerable<Email>).IsAssignableFrom(type))
{
return new EmailComparisonManager() as IEntityComparisonManager<TEntity>;
}
else if (typeof(IEnumerable<LoanLender>).IsAssignableFrom(type))
{
return new LendersComparisonManager() as IEntityComparisonManager<TEntity>;
}
else if (typeof(IEnumerable<PaymentPlanDetail>).IsAssignableFrom(type))
{
return new PaymentPlanDetailComparisonManager() as IEntityComparisonManager<TEntity>;
}
else if (type == typeof(ScheduledFeeDetail))
{
return new FeeDetailComparisonManager() as IEntityComparisonManager<TEntity>;
}
else if (typeof(PaymentPlanDetail).IsAssignableFrom(type))
{
return new DraftComparisonManager() as IEntityComparisonManager<TEntity>;
}
else if (typeof(Transaction).IsAssignableFrom(type))
{
return new TransactionComparisonManager() as IEntityComparisonManager<TEntity>;
}
return null;
}