Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

[Improvement] - Add by default using optimum constructor selector to unify the choice of constructor for types

Aberta
#892 6 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
4/5
Tempo estimado
3-5 dias
Facilidade para iniciantes
45/100
Tipo de issue
Funcionalidade
Clareza
Razoavelmente clara
Status de atividade
Pouca atividade
Stack de tecnologia
csharp
Domínio
backend

Direção de pesquisa

Comece localizando a lógica de seleção de construtor e de MappingScore no código-fonte do Mapster; o payload não especifica arquivos ou testes. Adicione cobertura focada para as regras declaradas de score, quantidade de parâmetros e desempate pela primeira correspondência, e considere concluídos os exemplos de construtores fornecidos quando eles selecionarem o construtor documentado.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

improvement

Since the restriction of having a default constructor new() for classes is no longer mandatory,
and the constructor can using default values ​​for the parameter type.

Optimality criterion(MappingScore) = maximum count of not mapped params. (MappingParam - CountParam)
If any constructors have the same MappingScore, select the one with more parameters.

Edge case: If any constructors have the same equal MappingScore and equal count of params select first.

Example:


Source
{
	A 
}

Destination
{
	new ()     // MappingScore = 0; ParamCount = 0;
	new (A)  // MappingScore  = 0; ParamCount = 1; <- select this max Param
}

Destination
{
	new ()         // MappingScore = 0; ParamCount = 0; <- select this max MappingScore 
	new (A,В)   // MappingScore  = -1; ParamCount = 1; 
}

Destination
{
	new (A)       // MappingScore = 0; ParamCount = 0; <- select this max MappingScore 
	new (A,В)    // MappingScore  = -1; ParamCount = 2; 
}

Edge case:


Destination
{
	new (A,B)     // MappingScore = -1; ParamCount = 1; <- select this max MappingScore 
	new (A,C)    // MappingScore  = -1; ParamCount = 1; 
}

Linguagem predominante
C#
Estrelas
5.2k
Forks
411
Merge médio
1d 8h
PRs com merge (30d)
4

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de MapsterMapper/Mapster

Todas as issues de MapsterMapper/Mapster

Issues semelhantes

Mais issues de C#

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.