我们正在从.aspx网络应用程序迁移到MVC应用程序。
以下是迁移时的问题:
我有第三方dll,它包含静态工厂方法,通过给定的接口名称返回实例。
控制器代码:
IBus objBus = (IBus) ObjectFactory.GetInstance("IBus") as IBus;
这里,ObjectFactory来自第三方dll,定义如下(GetInstance方法不再提供代码详细信息)。
public class ObjectFactory
{
public ObjectFactory();
public static object GetInstance(string interfaceName);
}
GetInstance方法在.aspx应用程序中运行良好 - objBus已成功创建。 但是在MVC控制器中执行时,同一行(Controller代码)会将objBus返回为null。
请提出可能存在的问题。 我想这可能是由于.aspx和mvc应用程序的体系结构和/或页面生命的差异。 对此问题的任何建议都非常感谢。
答案 0 :(得分:0)
我认为您应该联系您的第三方DLL提供程序并询问有关如何使用ASP.NET MVC的文档。
如果我是你,我会考虑使用Unity为你的MVC项目依赖注入删除该DLL。您需要做的就是在Global.asax的Application_Start方法中使用UnityConfig和DependecyResolver将类实例注入到任何控制器方法中。
如果您需要详细信息,请查看这些精彩文章。
http://netmvc.blogspot.com/2012/04/dependency-injection-in-aspnet-mvc-4.html
http://dotnetslackers.com/articles/aspnet/Using-Microsoft-Unity-in-ASP-NET-MVC.aspx
http://www.codeproject.com/Articles/99361/How-To-Use-Unity-Container-In-ASP-NET-MVC-Framewor