Próbujesz zaimplementować ogólne repozytorium na podstawie an article by Chris Pratt, które używa object
jako Id
(PK).Dlaczego mapowanie obiektu PK zerwanie ExpressMapper?
Wszystko jest w porządku, dopóki nie spróbowałem wykonać jednego z tych obiektów z ExpressMapper.
Więcej kodu poniżej. Ale zasadniczo, gdy próbuję i to zrobić:
var dataModel = postedModel.Map(new ExampleDataModel());
Daje mi:
No konstruktora bez parametrów zdefiniowanych dla tego obiektu.
Kiedy zmienić właściwość ExampleDataModel
Id
do string
lub int
to działa dobrze.
Mam googleed around. Nie widzę niczego oczywistego, ale jestem trochę nie na miejscu. Chciałbym wiedzieć:
Co to powoduje?
Czy mogę to jakoś obejść?
Chciałbym nadal używać obiektu PK i ExpressMapper, o ile jest to możliwe, ponieważ oba pasują do mojego projektu.
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.
}
Dziękuję i przepraszam za opóźnienie w powrocie. Nie sądzę, że to jest problem z tej okazji. Rozumiem, że C# dodaje domyślny konstruktor bez parametrów do obiektów, chyba że podano parametr z parametrami. Nie wyjaśnia też, w jaki sposób zmiana właściwości Id na "ciąg" rozwiązuje problem, który widzę. –