К сожалению, это невозможно в .NET, если вы не разметите конструкторы каким-либо образом.
Подпись метода, сохраненная для каждого конструктора в метаданных сборки, содержит только тип каждого параметра для конструктора. У ЛЮБОГО .NET ORM нет способа узнать, какой конструктор использовать. Все, что видит ORM, выглядит примерно так:
.ctor()
.ctor(string, string)
.ctor(string, string, string)
У ORM нет возможности узнать, какой параметр .ctor соответствует FirstName, LastName и MiddleName для вашего объекта Customer, например.
Чтобы предоставить вам такую поддержку, .NET ORM должен поддерживать чтение в пользовательских атрибутах, которые вы определяете для каждого параметра. Вам нужно разметить ваши конструкторы так:
public Customer ([Property ("FirstName")] string FirstName, [Property ("LastName")] string LastName, [Property ("MiddleName")] string MiddleName)
У этого есть 2 недостатка:
- Нет способа (о котором я могу подумать, кто-то, вероятно, поправит меня), что это может войти в файл отображения.
- Вам все равно нужно написать то же отображение, что и всегда, потому что ORM все еще должен иметь возможность получать отдельные значения для каждого свойства.
Таким образом, вам нужно будет выполнить всю эту дополнительную работу, помечая конструкторы, и в то же время вам все равно нужно отобразить свои классы ТОЧНО, как вы делали раньше.