C# 使用依赖项注入将唯一值传递给所有类?
下面的代码显示了我当前试图在WCF服务中实现的流。启动时的服务调用Bootstrapper类,该类使用Unity来注册和解析所需的类型。Gateway类包含public方法,该方法随后启动处理消息的主流程。代码的级别比下面所示的要多C# 使用依赖项注入将唯一值传递给所有类?,c#,wcf,dependency-injection,unity-container,C#,Wcf,Dependency Injection,Unity Container,下面的代码显示了我当前试图在WCF服务中实现的流。启动时的服务调用Bootstrapper类,该类使用Unity来注册和解析所需的类型。Gateway类包含public方法,该方法随后启动处理消息的主流程。代码的级别比下面所示的要多 public static class Bootstrapper { public static IGateway InitializeGateway() { IUnityContainer resolver = new Unity
public static class Bootstrapper
{
public static IGateway InitializeGateway()
{
IUnityContainer resolver = new UnityContainer();
resolver.RegisterType<IGateway, Gateway>();
resolver.RegisterType<ITranslator, Translator>();
resolver.RegisterType<IFormatter, IFormatter>();
return resolver.Resolve<IGateway>();
}
}
public class Gateway : IGateway
{
private readonly ITranslator translator;
private readonly IFormatter formatter;
public Gateway(ITranslator translator, IFormatter formatter)
{
this.translator = translator;
this.formatter = formatter;
}
public string ProcessMessage(string requestMessage)
{
// Create a new GUID for use in main flow for logging
Guid messageGuid = Guid.NewGuid();
requestMessage = this.translator.TranslateMessage(requestMessage);
requestMessage = this.formatter.FormatMessage(requestMessage);
return requestMessage;
}
}
现在,我试图实现的是获取为每条消息创建的GUID,并在服务流中传递它,这样每个类都有一个对它的引用,以用于日志记录
我试图找到一种使用DI和构造函数注入的方法,但不知道这是否可以实现,因为GUID是在网关在启动程序调用后收到消息时创建的。我试图摆脱的是将GUID作为参数传递到每个方法中
有什么建议吗?我建议您使用thread static属性来解决这个问题,而不是使用DI来滚动您自己的解决方案
请看一看这篇文章 据我所知,您只需要解析一次网关,然后使用该网关处理多条消息?如果是这样的话,那么我看不出通过IoC容器的DI有什么帮助。这项工作在您开始接收消息时完成。您正在使用GUID作为每条消息的标识符。为什么不能将GUID和requestMessage字符串封装到消息类中?这样,任何接收消息的方法都可以访问它的ID。