我有一个需要HttpClient类实例的类,我只想实例化一次,即Singleton
public interface IMyClass {}
public class MyClass : IMyClass {
private HttpClient client;
public MyClass(HttpClient client)
{
this.client = client;
}
}
IUnityContainer container = new UnityContainer();
container.RegisterType<IMyClass, MyClass>();
var httpClient = new HttpClient();
如何将httpClient实例注册为我的MyClass
的单身人士可以使用它?
答案 0 :(得分:2)
你试过这个吗?
container.RegisterType<IMyClass, MyClass>(new ContainerControlledLifetimeManager());
https://msdn.microsoft.com/en-us/library/ff647854.aspx
由于您的类只有一个实例,因此其中只有一个HTTP客户端实例。
更新:
为了解决HttpClient依赖关系本身,请使用
container.RegisterType<HttpClient, HttpClient>(new ContainerControlledLifetimeManager(), new InjectionConstructor());
这样任何需要HttpClient的类都会收到相同的实例。我不确定参数的顺序,但基本上你必须告诉Unity 2的东西 - 将HttpClient注册为单例并使用它的默认构造函数。