我有以下接口及其实现
public class DummyProxy : IDummyProxy
{
public string SessionID { get; set; }
public DummyProxy(string sessionId)
{
SessionId = sessionId;
}
}
public interface IDummyProxy
{
}
然后我有另一个类来获取会话ID
public class DummySession
{
public string GetSessionId()
{
Random random = new Random();
return random.Next(0, 100).ToString();
}
}
现在,在我的unity容器中,每当容器试图解析i dummyproxy时,我想将“session id”注入dummyproxy。但此“会话ID”必须从dummysession类生成。
container.RegisterType<IDummyProxy, DummyProxy>(
new InjectionConstructor(new DummySession().GetSessionId()));
这可能吗?
最佳答案
最好的方法是使用InjectionFactory
,即。
container.RegisterType<IDummyProxy, DummyProxy>(new InjectionFactory(c =>
{
var session = c.Resolve<DummySession>() // Ideally this would be IDummySession
var sessionId = session.GetSessionId();
return new DummyProxy(sessionId);
}));
InjectionFactory
允许您在创建实例时执行其他代码。c
是用来执行解析的IUnityContainer
,我们使用它解析会话,然后获取会话id,从中可以创建DummyProxy
实例。