fixup abstract to generation
This commit is contained in:
parent
ead01089be
commit
90da30344e
|
|
@ -213,10 +213,10 @@ namespace AutoMapProperty
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
var newList = GetModifiedAttributeList(compilation, propSyntax.AttributeLists);
|
var newList = GetModifiedAttributeList(compilation, propSyntax.AttributeLists);
|
||||||
/*
|
/*
|
||||||
context.ReportDiagnostic(Diagnostic.Create(
|
context.ReportDiagnostic(Diagnostic.Create(
|
||||||
new DiagnosticDescriptor("NEJ23", "Error", "New list on: {1} {0}", "NEJ", DiagnosticSeverity.Warning, true), null, string.Join(", ", newList.Select(x => x.ToString())), propSymbol.Name)
|
new DiagnosticDescriptor("NEJ23", "Error", "New list on: {1} {0}", "NEJ", DiagnosticSeverity.Warning, true), null, string.Join(", ", newList.Select(x => x.ToString())), propSymbol.Name)
|
||||||
);*/
|
);*/
|
||||||
|
|
||||||
//Modify attributes to not include our generation attribute
|
//Modify attributes to not include our generation attribute
|
||||||
mem = propSyntax.WithAttributeLists(newList);
|
mem = propSyntax.WithAttributeLists(newList);
|
||||||
|
|
@ -562,7 +562,7 @@ namespace AutoMapProperty
|
||||||
sb.Append("(").Append(ToType).Append(@")source").Append(prefix).Append(".").Append(Key);
|
sb.Append("(").Append(ToType).Append(@")source").Append(prefix).Append(".").Append(Key);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
sb.Append("source").Append(prefix).Append(".").Append(Key).Append(" == null ? null : ");
|
sb.Append("source").Append(prefix).Append(".").Append(Key).Append(" == null ? null : ");
|
||||||
var classToGenerate = otherClasses.First(x => x.Name == ToType.Name);
|
var classToGenerate = otherClasses.First(x => x.Name == ToType.Name);
|
||||||
sb.Append(@"new ").Append(classToGenerate.Name).Append(@"()
|
sb.Append(@"new ").Append(classToGenerate.Name).Append(@"()
|
||||||
{");
|
{");
|
||||||
|
|
@ -604,7 +604,7 @@ namespace AutoMapProperty
|
||||||
return sb.ToString();
|
return sb.ToString();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public static string GeneratePropertyTo(List<ClassToGenerate> otherClasses, string Key, ITypeSymbol FromType, ITypeSymbol ToType, bool nullable = true)
|
public static string? GeneratePropertyTo(List<ClassToGenerate> otherClasses, string Key, ITypeSymbol FromType, ITypeSymbol ToType, bool nullable = true)
|
||||||
{
|
{
|
||||||
var sb = new StringBuilder();
|
var sb = new StringBuilder();
|
||||||
sb.Append(Key).Append(@" =");
|
sb.Append(Key).Append(@" =");
|
||||||
|
|
@ -615,6 +615,9 @@ namespace AutoMapProperty
|
||||||
|
|
||||||
bool isArray = !SymbolEqualityComparer.Default.Equals(FromType, concreteFromType);
|
bool isArray = !SymbolEqualityComparer.Default.Equals(FromType, concreteFromType);
|
||||||
|
|
||||||
|
if (concreteFromType.IsAbstract)
|
||||||
|
return null;
|
||||||
|
|
||||||
if (isArray)
|
if (isArray)
|
||||||
{
|
{
|
||||||
sb.Append("(").Append(FromType).Append(@")(this.").Append(Key).Append(" != null ? ");
|
sb.Append("(").Append(FromType).Append(@")(this.").Append(Key).Append(" != null ? ");
|
||||||
|
|
@ -657,7 +660,10 @@ namespace AutoMapProperty
|
||||||
{
|
{
|
||||||
if (Value.FromIsReadOnly)
|
if (Value.FromIsReadOnly)
|
||||||
return null;
|
return null;
|
||||||
retSb.Append(GeneratePropertyTo(otherClasses, Key, Value.FromType, Value.ToType, nullable));
|
var generated = GeneratePropertyTo(otherClasses, Key, Value.FromType, Value.ToType, nullable);
|
||||||
|
if (generated == null)
|
||||||
|
return null;
|
||||||
|
retSb.Append(generated);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -748,7 +754,7 @@ namespace ").Append(classToGenerate.Namespace).Append(@"
|
||||||
[System.CodeDom.Compiler.GeneratedCode(""AutoMapProperty"", ""1.0.0"")]
|
[System.CodeDom.Compiler.GeneratedCode(""AutoMapProperty"", ""1.0.0"")]
|
||||||
public partial ").Append(classToGenerate.SourceContainer is ClassDeclarationSyntax ? "class " : "interface ").Append(classToGenerate.Name);
|
public partial ").Append(classToGenerate.SourceContainer is ClassDeclarationSyntax ? "class " : "interface ").Append(classToGenerate.Name);
|
||||||
|
|
||||||
if (classToGenerate.SourceContainer is ClassDeclarationSyntax )//&& !classToGenerate.SourceContainer.Modifiers.Any(x => x.IsKind(SyntaxKind.AbstractKeyword)))
|
if (classToGenerate.SourceContainer is ClassDeclarationSyntax)//&& !classToGenerate.SourceContainer.Modifiers.Any(x => x.IsKind(SyntaxKind.AbstractKeyword)))
|
||||||
{
|
{
|
||||||
sb.Append(": IAutomappedAttribute<").Append(classToGenerate.SourceContainer.Identifier).Append(",").Append(classToGenerate.Name).Append(">");
|
sb.Append(": IAutomappedAttribute<").Append(classToGenerate.SourceContainer.Identifier).Append(",").Append(classToGenerate.Name).Append(">");
|
||||||
sb.Append(", System.Collections.Generic.IEqualityComparer<").Append(classToGenerate.Name).Append(">");
|
sb.Append(", System.Collections.Generic.IEqualityComparer<").Append(classToGenerate.Name).Append(">");
|
||||||
|
|
@ -915,21 +921,23 @@ namespace ").Append(classToGenerate.Namespace).Append(@"
|
||||||
if(source == null)
|
if(source == null)
|
||||||
return null;
|
return null;
|
||||||
{");
|
{");
|
||||||
foreach (var prop in classToGenerate.MappableProperties)
|
foreach (var prop in classToGenerate.MappableProperties)
|
||||||
{
|
{/*
|
||||||
var property = GenerateCorrectToProperty(otherClasses, prop.Key, prop.Value);
|
if (prop.Value.FromType.IsAbstract)
|
||||||
if (property == null)
|
continue;*/
|
||||||
continue;
|
var property = GenerateCorrectToProperty(otherClasses, prop.Key, prop.Value);
|
||||||
sb.Append(@"
|
if (property == null)
|
||||||
").Append(property);
|
continue;
|
||||||
}
|
|
||||||
sb.Append(@"
|
sb.Append(@"
|
||||||
|
").Append(property);
|
||||||
|
}
|
||||||
|
sb.Append(@"
|
||||||
}
|
}
|
||||||
return source;
|
return source;
|
||||||
}
|
}
|
||||||
Type IAutomappedAttribute.GetSourceType() => typeof(").Append(classToGenerate.SourceContainer.Identifier).Append(@");
|
Type IAutomappedAttribute.GetSourceType() => typeof(").Append(classToGenerate.SourceContainer.Identifier).Append(@");
|
||||||
");
|
");
|
||||||
sb.Append(@"
|
sb.Append(@"
|
||||||
|
|
||||||
");
|
");
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user