我使用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设置为构造函数参数?
答案 0 :(得分:0)
我知道这是一个老问题,但是我认为this是您正在寻找的解决方案。
总而言之,您必须将JsonSerializerSettings.ContractResolver
设置为您自己的DefaultContractResolver
类的实现,在其中您要覆盖CreateObjectContract
方法。在此方法中,可以使用依赖项注入容器来创建自定义转换器的实例。