我想知道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;
} }
答案 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