我正在尝试使用StructureMap,并且基本上有3个抽象级别。我有一个存储库和数据库接口的服务。所以IService依赖于IRepo,而IRepo依赖于IDatabase。我的问题是我的IDatabase具体类型接收数据库连接信息。我将动态创建这些,尝试使用ObjectFactory.Configure()。
所以我有一个用户,用户链接到公司,我查找公司连接信息,我想根据这些信息创建正确的IDatabase具体类型。我在启动代码中配置了具体类型。我只想从外面使用IService对象...所以我想创建一个以公司名称命名的命名IService对象。尝试在运行中创建这些类型时遇到问题。任何信息都会有所帮助......
我基本上希望能够创建一个命名实例,并在运行时设置属性或将特定args传递给构造函数,而不知道具体类型。我在配置文件中有具体的类型设置。我试图使用ObjectFactory.GetInstance并尝试在Configure方法中设置属性,但得到了StackOverflow异常... HOW IRONIC
答案 0 :(得分:0)
根据Jeremy Miller(StructureMap的作者)的指示找到答案。以下是他指出的地方:
http://structuremap.sourceforge.net/RetrievingServices.htm#section5
这是我使用的一个例子:
IDatabaseRepository repo =
ObjectFactory.With("server").EqualTo("servername").
With("database").EqualTo("dbName").
With("user").EqualTo("userName").
With("password").EqualTo("password").
GetInstance<IDatabaseRepository>();
答案 1 :(得分:0)
看起来结构图的ObjectFactory不支持注入命名实例