How to register the mentioned code with autofac?

19 views
Skip to first unread message

Munish

unread,
Jun 6, 2017, 2:30:51 AM6/6/17
to Autofac
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;
        }

Alex Meyer-Gleaves

unread,
Jun 11, 2017, 2:14:41 AM6/11/17
to Autofac
Hi Munish,

That is a lot of code to simply ask someone to rewrite for you, especially without any context on what you are trying to achieve.

What have you tried so far and have you hit any issues? Have you read the documentation on registering components in Autofac?

I think you need to take this a bit further yourself and then ask more specific questions as needed.

Cheers,

Alex.
Reply all
Reply to author
Forward
0 new messages