c#JsonConverter属性与DependencyInjection

时间:2017-01-25 08:12:49

标签: c# dependency-injection json.net

我使用JsonConverter来解析asp核心中的接口。

这是我的JsonConverter-Impl。

 public class InterfaceJsonConverter<T> : Newtonsoft.Json.JsonConverter
    {
        public InterfaceJsonConverter(Type[] types, ITypeRepository typeRepository=null){
            ...
        }
    }

这就是我称呼它的方式

[JsonConverter(typeof(InterfaceJsonConverter<ISomeInterface>), new object[] {new Type[]{
        typeof(MyCustomType)
    }})]
    public interface ISomeInterface{
    ...
    }

基本上,当我删除可选参数&#34; typeRepository&#34;时,这种方法很有效。 但我需要这个参数由dependencyInjection设置。

我该如何设置? 我已经尝试在interface-Attribute中将此参数设置为null,如

[JsonConverter(typeof(InterfaceJsonConverter<ISomeInterface>), new object[] {new Type[]{
        typeof(MyCustomType)
    },null})]

然后我会得到一个NullReference-Exception。

有没有办法将null设置为构造函数参数?

1 个答案:

答案 0 :(得分:0)

我知道这是一个老问题,但是我认为this是您正在寻找的解决方案。

总而言之,您必须将JsonSerializerSettings.ContractResolver设置为您自己的DefaultContractResolver类的实现,在其中您要覆盖CreateObjectContract方法。在此方法中,可以使用依赖项注入容器来创建自定义转换器的实例。