Update method when properties are not readonly
This commit is contained in:
parent
55f735006e
commit
1e266bfd3f
|
@ -137,6 +137,8 @@ namespace MapTo
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
string? converterFullyQualifiedName = null;
|
string? converterFullyQualifiedName = null;
|
||||||
var converterParameters = ImmutableArray<string>.Empty;
|
var converterParameters = ImmutableArray<string>.Empty;
|
||||||
ITypeSymbol? mappedSourcePropertyType = null;
|
ITypeSymbol? mappedSourcePropertyType = null;
|
||||||
|
@ -162,7 +164,9 @@ namespace MapTo
|
||||||
converterParameters.ToImmutableArray(),
|
converterParameters.ToImmutableArray(),
|
||||||
sourceProperty.Name,
|
sourceProperty.Name,
|
||||||
ToQualifiedDisplayName(mappedSourcePropertyType),
|
ToQualifiedDisplayName(mappedSourcePropertyType),
|
||||||
ToQualifiedDisplayName(enumerableTypeArgumentType));
|
ToQualifiedDisplayName(enumerableTypeArgumentType),
|
||||||
|
(sourceProperty as IPropertySymbol).IsReadOnly);
|
||||||
|
;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected bool TryGetMapTypeConverter(ISymbol property, IPropertySymbol sourceProperty, out string? converterFullyQualifiedName,
|
protected bool TryGetMapTypeConverter(ISymbol property, IPropertySymbol sourceProperty, out string? converterFullyQualifiedName,
|
||||||
|
|
|
@ -29,7 +29,8 @@ namespace MapTo
|
||||||
ImmutableArray<string> TypeConverterParameters,
|
ImmutableArray<string> TypeConverterParameters,
|
||||||
string SourcePropertyName,
|
string SourcePropertyName,
|
||||||
string? MappedSourcePropertyTypeName,
|
string? MappedSourcePropertyTypeName,
|
||||||
string? EnumerableTypeArgument)
|
string? EnumerableTypeArgument,
|
||||||
|
bool isReadOnly)
|
||||||
{
|
{
|
||||||
public bool IsEnumerable => EnumerableTypeArgument is not null;
|
public bool IsEnumerable => EnumerableTypeArgument is not null;
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,17 +21,24 @@ namespace MapTo.Sources
|
||||||
.WriteLine($"partial class {model.TypeIdentifierName}")
|
.WriteLine($"partial class {model.TypeIdentifierName}")
|
||||||
.WriteOpeningBracket();
|
.WriteOpeningBracket();
|
||||||
|
|
||||||
// Class body
|
// Class body
|
||||||
/*if (model.GenerateSecondaryConstructor)
|
/*if (model.GenerateSecondaryConstructor)
|
||||||
{
|
{
|
||||||
builder
|
|
||||||
.GenerateSecondaryConstructor(model)
|
|
||||||
.WriteLine();
|
|
||||||
}*/
|
|
||||||
|
|
||||||
builder
|
builder
|
||||||
.GeneratePrivateConstructor(model)
|
.GenerateSecondaryConstructor(model)
|
||||||
.WriteLine()
|
.WriteLine();
|
||||||
|
}*/
|
||||||
|
|
||||||
|
builder
|
||||||
|
.GeneratePrivateConstructor(model)
|
||||||
|
.WriteLine();
|
||||||
|
|
||||||
|
if(PropertiesAreReadOnly(model))
|
||||||
|
{
|
||||||
|
builder.GenerateUpdateMethod(model);
|
||||||
|
}
|
||||||
|
|
||||||
|
builder
|
||||||
//.GenerateFactoryMethod(model)
|
//.GenerateFactoryMethod(model)
|
||||||
.GenerateUpdateMethod(model)
|
.GenerateUpdateMethod(model)
|
||||||
|
|
||||||
|
@ -105,7 +112,7 @@ namespace MapTo.Sources
|
||||||
{
|
{
|
||||||
builder.WriteLine(property.MappedSourcePropertyTypeName is null
|
builder.WriteLine(property.MappedSourcePropertyTypeName is null
|
||||||
? $"{property.Name} = {sourceClassParameterName}.{property.SourcePropertyName};"
|
? $"{property.Name} = {sourceClassParameterName}.{property.SourcePropertyName};"
|
||||||
: $"{property.Name} = {mappingContextParameterName}.{MappingContextSource.MapMethodName}<{property.MappedSourcePropertyTypeName}, {property.Type}>({sourceClassParameterName}.{property.SourcePropertyName});");
|
: "");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -123,6 +130,16 @@ namespace MapTo.Sources
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static bool PropertiesAreReadOnly(MappingModel model)
|
||||||
|
{
|
||||||
|
foreach (var property in model.MappedProperties)
|
||||||
|
{
|
||||||
|
if (!property.isReadOnly) return false;
|
||||||
|
}
|
||||||
|
return true ;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
private static SourceBuilder GenerateFactoryMethod(this SourceBuilder builder, MappingModel model)
|
private static SourceBuilder GenerateFactoryMethod(this SourceBuilder builder, MappingModel model)
|
||||||
{
|
{
|
||||||
var sourceClassParameterName = model.SourceTypeIdentifierName.ToCamelCase();
|
var sourceClassParameterName = model.SourceTypeIdentifierName.ToCamelCase();
|
||||||
|
|
Loading…
Reference in New Issue