簡體   English   中英

為什么映射一個對象PK破壞ExpressMapper?

[英]Why is mapping an object PK breaking ExpressMapper?

嘗試基於Chris Pratt撰寫的使用object作為Id (PK) 的文章來實現通用存儲庫。

一切都很好,直到我用ExpressMapper嘗試.Map()其中一個對象。

更多代碼如下。 但基本上,當我嘗試這樣做時:

var dataModel = postedModel.Map(new ExampleDataModel());

它給了我:

沒有為此對象定義的無參數構造函數。

當我將ExampleDataModelId屬性更改為stringint它可以正常工作。

我用Google搜索了一下。 我沒有看到任何明顯的東西,但我有點超出我的深度。 我想知道:

  • 是什么造成的?

  • 我能以某種方式解決這個問題嗎?

如果可能的話,我想繼續使用對象PK和ExpressMapper,因為它們都適合我的項目。


public interface IDataModel
{
    object Id { get; }  
}

public interface IDataModel<PKT> : IDataModel
{
    new PKT Id { get; set; }
}

public abstract class DataModel<PKT> : IDataModel<PKT>
{
    public PKT Id { get; set; }
    object IDataModel.Id
    {
        get { return this.Id; }
    }
}



public class ExampleDataModel : 
    DataModel<string>, 
    IDataModel<string>
{
     public virtual string SomeProperty{ get; set; }

    // etc.
}

當你在做一個new ExampleDataModel() ,你試圖用無參數構造函數初始化一個ExampleDataModel的實例,但看着你的類,你沒有一個,這就是你得到的原因

No parameterless constructor defined for this object.

您應該添加一個無參數構造函數,如下所示

ExampleDataModel()
{
//init object 
}

雖然我不確定你想如何初始化你的對象所以我不確定你的構造函數應該如何。

更改你的ExampleDataModel類,我沒有看到Id屬性,你如何返回this.Id沒有任何引用,你還需要一個字符串Id屬性IDataModel<string>強制你我希望這個幫助:

 public class ExampleDataModel : IDataModel, IDataModel<string>
    {
        public string Id { get; set; }

        object IDataModel.Id
        {
            get { return this.Id; }
        }

        public virtual string SomeProperty { get; set; }



        // etc.
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM