Ninject Singleton Scope

时间:2013-03-29 13:01:44

标签: asp.net-mvc scope ninject

我想知道Ninject Singleton范围在ASP.NET MVC中有什么用处。在依赖没有任何可能改变的属性/变量的情况下,我在想。例如,一个mapper类,它只接受一个或两个对象并将其映射到一个新对象。

public class AccountMapper : IAccountMapper
{
  public IList<WebAccount> Map(Account[] accounts)
  {
    if (accounts == null)
        throw new ArgumentNullException("accounts");

    Account acct;
    List<WebAccount> authorizedAccounts = new List<WebAccount>();
    foreach (var account in accounts)
    {
        if (account.active == 0)
        {
            acct = new WebAccount     (                                                        
                                                account.active == 0 ? true : false,
                                                account.account_number,
                                                account.agreement_no                                                        
                                            );

            if (!string.IsNullOrEmpty(acct.AccountNumber))
                acct.AccountNumber = acct.AccountNumber.Trim();
            if (!string.IsNullOrWhiteSpace(acct.ArgreementNo))
                acct.ArgreementNo = acct.ArgreementNo.Trim();

            authorizedAccounts.Add(acct);

        }
    }
    return authorizedAccounts;

}     }

1 个答案:

答案 0 :(得分:2)

是的,您可以在SingletonScope()中使用该类,因为它不包含任何可能受其他线程影响的属性或属性,但您还应该知道添加实例数据可能会破坏您的代码

您可以在此处详细了解Singleton Scope:https://github.com/ninject/ninject/wiki/Object-Scopes并查看其他观点:When to use Singleton vs Transient vs Request using Ninject and MongoDB