如何使用Ninject绑定与JsonConvert.DeserializeObject <t>()</t>

时间:2014-08-12 17:56:15

标签: c# dependency-injection json.net ninject

我是Dependency Injection的新手,我试图让Json.Net反序列化一个包含接口成员的类。我收到以下错误。

“无法创建IBioMetricCodeAttributes类型的实例.Type是接口或抽象类,无法实例化。”

以下是我试图让Json.Net反序列化的类。

public sealed class EntryContract : IEntryContract
{
    [JsonIgnore] public int EntryId { get; set; }
    public string EntryTypeKey { get; set; }
    public string ApplicationKey { get; set; }
    public string PersonKey { get; set; }
    public string ScreeningDateTime { get; set; }
    [JsonIgnore] public int ApplicationId { get; set; }
    [JsonIgnore] public int EntryTypeId { get; set; }
    [JsonIgnore] public int? HealthProfileId { get; set; }
    [JsonIgnore] public Guid ChangeSetId { get; set; }
    [JsonIgnore] public DateTime EntryDate { get; set; }
    [JsonIgnore] public DateTime SavedDate { get; set; }
    [JsonIgnore] public string ExternalId { get; set; }
    [JsonIgnore] public int OriginatingApplicationId { get; set; }
    public List<IBioMetricCodeAttributes> CodeAttributes { get; set; }
    public List<IBioMetricCountAttributes> CountAttributes { get; set; }
    public List<IBioMetricDateAttributes> DateAttributes { get; set; }
    public List<IBioMetricEnumAttributes> EnumAttributes { get; set; }
    public List<IBioMetricFreeFormAttributes> FreeFormAttributes { get; set; }
    public List<IBioMetricMeasurementAttributes> MeasurementAttributes { get; set; }
    [JsonIgnore]
    public List<IBioMetricXmlAttributes> XmlAttributes { get; set; }
}

正在加载我的Ninject模块。它如下:

public class NexusModule : NinjectModule
{
    public override void Load()
    {
        Bind<IBioMetricCodeAttributes>().To<BioMetricCodeAttributes>();
        Bind<IBioMetricCountAttributes>().To<BioMetricCountAttributes>();
        Bind<IBioMetricDateAttributes>().To<BioMetricDateAttributes>();
        Bind<IBioMetricEnumAttributes>().To<BioMetricEnumAttributes>();
        Bind<IBioMetricFreeFormAttributes>().To<BioMetricFreeFormAttributes>();
        Bind<IBioMetricMeasurementAttributes>().To<BioMetricMeasurementAttributes>();
        Bind<IBioMetricXmlAttributes>().To<BioMetricXmlAttributes>();
    }
}

错误是在以下代码行引发的。

return JsonConvert.DeserializeObject<List<EntryContract>>(GetBiometricData(nexusId, entryTypes));

我正在使用Newtonsoft.Json版本6.0和Ninject版本3.2.2。

对此有任何帮助将不胜感激。

0 个答案:

没有答案