如何在 Castle Windsor 工厂方法中获取请求类型?
How to get to the requesting type in a Castle Windsor factory method?
我想在组件注册期间使用工厂方法来集成静态记录器工厂,如下所示:
Component
.For<ILogger>()
.UsingFactoryMethod((kernel, componentModel, creationContext) => LoggingFactory.GetLogger("..."))
.LifestyleTransient(),
GetLogger
class 需要日志上下文的名称。我想向那里传递请求记录器的 class 的全名。在这种情况下,这将是明确的,因为 ILogger 服务的生活方式是短暂的。
我看到有 creationContext.RequestedType
(包含 ILogger
),但没有 creationContext.RequestingType
。
您可以从 creationContext.Handler.ComponentModel.Name
获取解析类型。
以下代码应该可以满足您的需要:
Component
.For<ILogger>()
.UsingFactoryMethod((kernel, componentModel, creationContext) => LoggingFactory.GetLogger(creationContext.Handler.ComponentModel.Name))
.LifestyleTransient(),
我想在组件注册期间使用工厂方法来集成静态记录器工厂,如下所示:
Component
.For<ILogger>()
.UsingFactoryMethod((kernel, componentModel, creationContext) => LoggingFactory.GetLogger("..."))
.LifestyleTransient(),
GetLogger
class 需要日志上下文的名称。我想向那里传递请求记录器的 class 的全名。在这种情况下,这将是明确的,因为 ILogger 服务的生活方式是短暂的。
我看到有 creationContext.RequestedType
(包含 ILogger
),但没有 creationContext.RequestingType
。
您可以从 creationContext.Handler.ComponentModel.Name
获取解析类型。
以下代码应该可以满足您的需要:
Component
.For<ILogger>()
.UsingFactoryMethod((kernel, componentModel, creationContext) => LoggingFactory.GetLogger(creationContext.Handler.ComponentModel.Name))
.LifestyleTransient(),