在OpenRasta中,如何在自定义IPipelineContributor中获取对所选处理程序的引用?

时间:2011-10-26 11:09:05

标签: openrasta

编写自定义IPipelineContributor时,不清楚如何获取对所选处理程序的引用。自定义贡献者的目的是在返回结果后处置实现IDisposable的任何处理程序。

给出以下代码示例:

public class DisposerPipelineContributor : IPipelineContributor
{
    public void Initialize(IPipeline pipelineRunner)
    {
        pipelineRunner.Notify(MyMethod).After<KnownStages.IOperationExecution>();
    }

    PipelineContinuation MyMethod(ICommunicationContext arg)
    {
        return PipelineContinuation.Continue;
    }
}

ICommunicationContext使我们能够访问OpenRasta自己的类型系统并显示所选处理程序的类型:[OpenRasta.TypeSystem.ReflectionBased.ReflectionBasedType] = {CLR Type: MySelectedHandler}。但是,目前尚不清楚如何获取实际用于满足请求的处理程序实例。

1 个答案:

答案 0 :(得分:1)

伊恩,

首先,如果你想要处理对象等功能,你应该使用自己的IoC容器,大多数框架都实现了这个功能。

我们将在下一个主要版本的容器中添加处理合同,因为现在或多或少可以做到这一点,而不是在我们构建2.0时。

如果您想自己在处理程序上调用IDisposable而无法切换到成熟的IoC容器,您将在ICommunicationContext.PipelineData中找到处理程序实例。