Wcf 如何使用unity容器通过传递类型进行解析?

Wcf 如何使用unity容器通过传递类型进行解析?,wcf,unity-container,Wcf,Unity Container,我正在尝试使用Microsoft站点中提供的以下示例。按类型解析时给出编译时错误 这是代码中的问题,如何解决 public class DependencyInjectionInstanceProvider : IInstanceProvider { private readonly Type _ServiceType; public DependencyInjectionInstanceProvider(Type serviceType) { _S

我正在尝试使用Microsoft站点中提供的以下示例。按类型解析时给出编译时错误

这是代码中的问题,如何解决

 public class DependencyInjectionInstanceProvider : IInstanceProvider
{
    private readonly Type _ServiceType;

    public DependencyInjectionInstanceProvider(Type serviceType)
    {
        _ServiceType = serviceType;
    }

    public object GetInstance(InstanceContext instanceContext)
    {
        return GetInstance(instanceContext, null);
    }

    public object GetInstance(InstanceContext instanceContext, Message message)
    {
        return DependencyFactory.Resolve(_ServiceType);  //error
    }

    public void ReleaseInstance(InstanceContext instanceContext, object instance)
    {
    }
}


 public class DependencyFactory
{
    private static IUnityContainer _container;

    public static IUnityContainer Container
    {
        get
        {
            return _container;
        }
        private set
        {
            _container = value;
        }
    }

    static DependencyFactory()
    {
        var container = new UnityContainer();

        var section = (UnityConfigurationSection)ConfigurationManager.GetSection("unity");
        if (section != null)
        {
            section.Configure(container);
        }
        _container = container;
    }

    public static T Resolve<T>()
    {
        T ret = default(T);

        if (Container.IsRegistered(typeof(T)))
        {
            ret = Container.Resolve<T>();
        }

        return ret;
    }

}
公共类DependencyInjectionInstanceProvider:IInstanceProvider
{
私有只读类型_ServiceType;
公共依赖项InjectionInstanceProvider(类型serviceType)
{
_服务类型=服务类型;
}
公共对象GetInstance(InstanceContext InstanceContext)
{
返回GetInstance(instanceContext,null);
}
公共对象GetInstance(InstanceContext InstanceContext,消息)
{
返回DependencyFactory.Resolve(_ServiceType);//错误
}
public void ReleaseInstance(InstanceContext InstanceContext,对象实例)
{
}
}
公共类依赖工厂
{
专用静态IUnityContainer\u容器;
公共静态IUnityContainer容器
{
得到
{
返回容器;
}
专用设备
{
_容器=价值;
}
}
静态依赖工厂()
{
var container=new UnityContainer();
var section=(UnityConfigurationSection)ConfigurationManager.GetSection(“unity”);
if(节!=null)
{
配置(容器);
}
_容器=容器;
}
公共静态T解析()
{
T ret=默认值(T);
if(容器已注册(类型(T)))
{
ret=Container.Resolve();
}
返回ret;
}
}

很抱歉回答了这么长时间,但我只是在这几天才开始使用Unity。 也许你必须这样打电话:

  DependencyFactory.Resolve<_ServiceType>();  
DependencyFactory.Resolve();
我认为问题在于您将类型视为调用者中的参数。
查看此链接

示例代码有一个
DependencyFactory.Resolve()
,但没有
DependencyFactory.Resolve(键入typeToResolve)

您可以实现DependencyFactory.Resolve(键入typeToResolve)来复制示例逻辑(请参阅以使用类型创建默认值)

最简单的解决方案是访问容器成员

确保包括使用Microsoft.Practices.Unity

public object GetInstance(InstanceContext instanceContext, Message message)
{
    return DependencyFactory.Container.Resolve(_serviceType);
}

在这件事上和你在一起。我知道如果我能找到答案,答案会很简单。