3

我想知道在 ASP.NET MVC 中 Ninject Singleton 作用域在哪些情况下可能有用。我在考虑依赖项没有任何可以更改的属性/变量的情况。例如一个映射器类,它只接收一个或两个对象并将其映射到一个新对象。

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;

} }

4

1 回答 1

2

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

您可以在此处阅读有关 Singleton Scope 的更多信息:https ://github.com/ninject/ninject/wiki/Object-Scopes并查看其他意见:When to use Singleton vs Transient vs Request using Ninject and MongoDB

于 2013-03-29T13:47:20.960 回答