2014-10-02 59 views
0

我们正在从.aspx web应用程序迁移到MVC应用程序。静态工厂方法不会在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控制器中执行时,同一行(控制器代码)将objBus返回为null。

请建议可能是什么问题。 我想这可能是由于.aspx和mvc应用程序的体系结构和/或页面生命周期不同造成的。 关于这个问题的任何建议,非常感谢。

回答

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