PDA

View Full Version : Controller Factory و استفاده از StructureMap



mydonya
چهارشنبه 19 فروردین 1394, 17:42 عصر
سلام دوستان.
در حال نوشتن پروژه ای هستم که دارای چند Solution به شرح ذیل :

Controllers
Infrastructure
Service
Repository
Web
Api

موضوعی که وجود داره من برای ایجاد نمونه از کنترل این کار رو به عهده StructureMap گذاشتم
فایل ControllerFactory.cs

public class EstesnaControllerFactory:DefaultControllerFactory
{
protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
{

if (controllerType == null)
throw new InvalidOperationException(string.Format("Page not found: {0}", requestContext.HttpContext.Request.RawUrl));
return EstesnaObjectFactory.Container.GetInstance(control lerType) as Controller;
}
}


فایل EstesnaObjectFactory.cs

public static class EstesnaObjectFactory
{
private static readonly Lazy<StructureMap.Container> ContainerBuilder =
new Lazy<StructureMap.Container>(DefaultContainer, LazyThreadSafetyMode.ExecutionAndPublication);

public static StructureMap.IContainer Container
{
get { return ContainerBuilder.Value; }

}

private static StructureMap.Container DefaultContainer()
{

return new StructureMap.Container(ioc =>
{
ioc.For<IAuthenticationManager>()
.Use(() => HttpContext.Current.GetOwinContext().Authenticatio n);
ioc.For<IDataContext>().Use<DataContext>();
ioc.For<DbContext>().Use<DataContext>();
}
}
}


مسئله ای که هست اینه که من تعداد زیادی WebApi برای انجام عملیاتی به صورت RestFul ایجاد کردم که میخواد نمونه سازی از اونها رو هم به عهده StructureMap بزارم. اما مشکلی که هست اینه که کنترل های WebApiو کنترلرهای MVC از دو نوع متفاوت مشتق میشن و من نمیتونم این موضوع رو با StructureMap هندل کنم.
اگر دوستان تجربه و یا راه حلی برای استفاده همزمان WebApi و MVC در دو Solution مختلف و در یک پروژه رو دارن ممنون میشم راهنمایی کنن.
باز هم تاکید میکنم نیاز به نمونه سازی از هر دو نوع کنترلر توسط StructureMap رو دارم.
با تشکر

mydonya
شنبه 22 فروردین 1394, 10:52 صبح
کسی نیست بتونه جواب بده عایا؟!

mydonya
چهارشنبه 26 فروردین 1394, 14:46 عصر
از جوابهای پر شور دوستان متشکرم !
خودم حلش کردم