![](/img/trans.png)
[英]In asp.net-mvc, How can I insert a class name from my view model for a html.dropdownlistfor
[英]How can I use from Structuremap auto register in asp.net-mvc?
我有一個簡單的mvc應用程序,具有3層
我在公共層定義我的服務合同,並在服務層中實施
//Common layer
public interface IPersonService
{
void Foo();
}
//Services layer
public classPersonService:IPersonService
{
void Foo()
{
//To DO
}
}
在我的Global.asax中,我為初始Structuremap容器編寫此代碼
ObjectFactory.Initialize(x =>
{
x.Scan(scan =>
{
scan.TheCallingAssembly();
scan.WithDefaultConventions();
});
}
現在,在我的控制器中,當我想從IPersonService獲取實例時
var personService= ObjectFactory.GetInstance<IPersonService>();
我得到這個錯誤
沒有注冊默認實例,並且無法自動確定類型'* .IPersonService'
有解決這個問題的主意嗎?
您可以使用AssembliesFromApplicationBaseDirectory()
函數指定要掃描的其他程序集,如下所示:
scan.AssembliesFromApplicationBaseDirectory(a => a.FullName.StartsWith("YourNamespace.Common"));
scan.AssembliesFromApplicationBaseDirectory(a => a.FullName.StartsWith("YourNamespace.Services"));
當您將此問題標記為StructureMap 3問題時,我建議不要使用ObjectFactory
因為Jeremy Miller(StructureMap的作者)明確表示它將在將來的版本中刪除 。 實際上,您應該得到警告,它將在將來的版本中刪除。
相反,您應該以如下方式配置您的容器:
IContainer container = new Container();
container.Configure(c => {
c.IncludeRegistry<YourRegistry>();
});
DependencyResolver.SetResolver(new StructureMapDependencyResolver(container));
您可以在此處閱讀有關StructureMap注冊表的更多信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.