PDA

View Full Version : نحوه استفاده از structuremap در mvc5



helpsos
چهارشنبه 27 فروردین 1393, 08:42 صبح
با سلام
برای استفاده از الگوی واحد کار من از structuremap استفاده نمودم ولی نمیدونم که چرا بهم خطا میده . من از کدهای فایل ضمیمه استفاده کردم ولی ....

hp1361
پنج شنبه 28 فروردین 1393, 20:25 عصر
سلام این لینک میتونه کمکت کنه

http://www.webadvanced.com/blog/asp.net-mvc-4-web-api-and-structuremap

موفق باشیم

helpsos
شنبه 30 فروردین 1393, 00:42 صبح
سلام
نه متاسفانه کمکی نکرد

من از آخرین ورژن structuremap استفاده کردم که به این خطاها رسیدم
کسی راه حلی نداره؟

mydonya
پنج شنبه 20 فروردین 1394, 15:04 عصر
به صورت زیر عمل کنید
یک فایل با نام مثلا 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;
}
}


و یک فایل با نام ObjectFactory.cs


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


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


private static Container DefaultContainer()
{
return new Container(ioc =>
{
#region Structures


ioc.For<IDataContextAsync>().Use<DataContext>();
ioc.For<IUnitOfWorkAsync>().Use<UnitOfWork>();
}
}

در این فایل میتونید اینترفیس ها و کلاسها رو مشخص کنید

و سپس در فایل Global.asa.cx


ControllerBuilder.Current.SetControllerFactory(new ControllerFactory());

این کد رو اضافه کنید

ali_72
شنبه 22 فروردین 1394, 08:25 صبح
سلام
من StructureMap را در سایت آقای نصیری خوندم ولی کامل متوجه مفهوم اون نشدم ببخشید اگه امکانش هست یه توضیح کوتاه بدید که چیه چرا و کجا استفاده میشه؟

mydonya
شنبه 22 فروردین 1394, 10:50 صبح
برای پیاده سازی مفهوم Dependency Injection از کتابخانه های متفاوتی نظیر Structure Map , Unity , Ninject و غیره استفاده میشه. بدین معنی که نمونه سازی از کلاسها توسط اینترفیس های آن انجام بشه و بدین صورت نرم افزار اصطلاحا loose Couple میشه.
همچنین میتونید نمونه سازی از کنترلر های MVC را هم به عهده این کتابخانه ها قرار بدین