我想为我的 Nancy 模块使用自定义序列化,它使用请求的 URL 作为其输入的一部分。
我已经看到您需要在 ConfigureRequestContainer 的覆盖中注册使用上下文的依赖项(如C# IOC 和 NancyFX 中的请求状态中所回答)
public class NancyBootstrapper : DefaultNancyBootstrapper
{
protected override void ConfigureRequestContainer(
TinyIoCContainer container,
NancyContext context)
{
container.Register<JsonSerializer>(new CustomJsonSerializer(context));
}
}
而且我已经看到您可以使用 IRegistrations 接口为 Nancy 指定不同的序列化器(如使用 Nancy TinyIoC 配置 JsonNetSerializer 和 JsonNetBodyDeserializer 中所回答的)
public class JsonRegistration : IRegistrations
{
public IEnumerable<TypeRegistration> TypeRegistrations
{
get
{
yield return new TypeRegistration(typeof(JsonSerializer), typeof(CustomJsonSerializer));
}
}
public IEnumerable<CollectionTypeRegistration> CollectionTypeRegistrations { get; protected set; }
public IEnumerable<InstanceRegistration> InstanceRegistrations { get; protected set; }
}
如果我以第一种方式注册我的序列化程序,我无法让 Nancy 将它用于 JSON 序列化。
如果我以第二种方式注册它,我将无法注入当前 NancyContext 的副本并获取对请求的访问权限——它甚至会在调用该方法之前尝试创建序列化程序的实例。ConfigureRequestContainer
我在这里想念什么?