该示例的意思是容器将为MyType
每个请求创建一个实例。当它创建 的实例时MyType
,依赖项IDependency
将作为参数传递给 的构造函数MyType
,connectionString
.
您的示例代码需要一个输入参数c
:
container.Register(c => new MyType(c.Resolve<IDependency>(), connectionString));
的使用connectionString
取决于您。您可以在MyType
. 您可能希望将其公开为公共属性,以便可以访问它。或者用它来陪伴你IDependency
。通过扩展示例:
public class MyType
{
private IDependency _someDependency;
public string ConnectionString { get; private set }
public MyType(IDependency dependency, string connectionString)
{
_someDependency = dependency.SetConnectionString(connectionString); // Assumes this method exists.
ConnectionString = connectionString;
}
}
在您的服务中,何时MyType
自动装配您现在可以访问该对象。
public class MyService : Service
{
public MyType MyType { get; set; }
public void Get(SomeRequest request)
{
string connectionString = MyType.ConnectionString;
}
}
如果您想在MyType
其他地方解决,您可以使用
MyType myType = HostContext.Container.Resolve<MyType>();
string connectionString = myType.ConnectionString;
我希望这可以澄清所有发生的事情都是connectionString
传递给对象构造函数,并且您可以根据需要自由使用它。