C# 使用依赖项注入将唯一值传递给所有类?

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

下面的代码显示了我当前试图在WCF服务中实现的流。启动时的服务调用Bootstrapper类,该类使用Unity来注册和解析所需的类型。Gateway类包含public方法,该方法随后启动处理消息的主流程。代码的级别比下面所示的要多

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。