为什么映射一个对象PK破坏ExpressMapper?

Mar*_*nox 10 generics asp.net-mvc primary-key express-mapper

想要实现基于通用仓库由克里斯·普拉特的文章使用objectId(PK).

一切都很好,直到我.Map()ExpressMapper尝试其中一个对象.

更多代码如下.但基本上,当我尝试这样做时:

var dataModel = postedModel.Map(new ExampleDataModel());
Run Code Online (Sandbox Code Playgroud)

它给了我:

没有为此对象定义的无参数构造函数.

当我将Id属性更改ExampleDataModel为a 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.
}
Run Code Online (Sandbox Code Playgroud)

Mun*_*zer 2

当你这样做时new ExampleDataModel(),你试图ExampleDataModel用无参数构造函数初始化一个实例,但是看看你的类,你没有一个,这就是为什么你得到

No parameterless constructor defined for this object.

您应该添加一个无参数构造函数,如下所示

ExampleDataModel()
{
//init object 
}
Run Code Online (Sandbox Code Playgroud)

虽然我不确定你想如何初始化你的对象,所以我不确定你的构造函数应该如何。