.net 基于委托的构造函数参数

.net 基于委托的构造函数参数,.net,dependency-injection,unity-container,.net,Dependency Injection,Unity Container,我有一个例子,我需要Unity在“解析”期间而不是在注册期间捕获构造函数值。请注意此扩展: public class DataAccessRegistry : UnityContainerExtension, IDataAccessConfig { [ThreadStatic] static string connection = ""; protected override void Initialize() { Container.Regis

我有一个例子,我需要Unity在“解析”期间而不是在注册期间捕获构造函数值。请注意此扩展:

public class DataAccessRegistry : UnityContainerExtension, IDataAccessConfig
{
    [ThreadStatic]
    static string connection = "";

    protected override void Initialize()
    {
        Container.RegisterType<DataAccess>(
           new InjectionProperty("log"),  
           new InjectionConstructor(connection));
    }

    public IDataAccessConfig WithConnection(string connectionString)
    {
        connection = connectionString;
        return this;
    }
}
委托完成了它的工作并修复了问题,但是现在
InjectionProperty(“log”)
不起作用,因为它被忽略了。当Unity看到
InjectionFactory
时,它会忽略
InjectionProperty

所以现在我认为解决方案是有一个接受委托的自定义
InjectionParameter
。但我想知道,如果没有这种定制,是否还有其他方法可以做到这一点

我使用的是Unity2.1,但如果它有助于解决此问题,则可以升级。我也很好奇其他.NETIOC容器如何解决这个问题

p、 在我的例子中,“log”属性是用一个函数来处理的,但这只是琐事——与回答这个问题无关

        Container.RegisterType<DataAccess>(
            new InjectionProperty("log"),  //custom BuildStrategy again.
            new InjectionFactory(c =>
            {
                var dao = new DataAccess(connection);
                c.BuildUp(dao);   //Try to make custom BuildStrategy apply.
                return dao;
            }));