@@ -16,9 +16,9 @@ public readonly struct MarshallerOptions
16
16
private readonly string _converterFullPath ;
17
17
18
18
private MarshallerOptions ( INamedTypeSymbol convertersType ,
19
- IEnumerable < KeyValuePair < string , Converter > > converters , int enumStrategy )
19
+ IEnumerable < KeyValuePair < string , ITypeSymbol > > converters , int enumStrategy )
20
20
{
21
- Converters = converters . ToDictionary ( x => x . Value . T , x => x , SymbolEqualityComparer . Default ) ;
21
+ Converters = converters . ToDictionary ( x => x . Value , x => x , SymbolEqualityComparer . Default ) ;
22
22
_convertersType = convertersType ;
23
23
_enumStrategy = enumStrategy ;
24
24
_converterFullPath = _convertersType . ToDisplayString ( SymbolDisplayFormat . FullyQualifiedFormat ) ;
@@ -86,8 +86,7 @@ public bool IsConvertable(ITypeSymbol typeSymbol)
86
86
return typeSymbol . TypeKind is TypeKind . Enum || Converters . ContainsKey ( typeSymbol ) ;
87
87
}
88
88
89
- private Dictionary < ISymbol ? , KeyValuePair < string , Converter > > Converters { get ; }
90
-
89
+ private Dictionary < ISymbol ? , KeyValuePair < string , ITypeSymbol > > Converters { get ; }
91
90
92
91
public IEnumerable < string > ClassDeclaration
93
92
{
@@ -112,15 +111,15 @@ public static MarshallerOptions Create(INamedTypeSymbol typeSymbol, int enumStra
112
111
return new MarshallerOptions ( typeSymbol , keyValuePairs , enumStrategy ) ;
113
112
}
114
113
115
- private static KeyValuePair < string , Converter > ? ConverterDataMemberOrNull ( ISymbol symbol )
114
+ private static KeyValuePair < string , ITypeSymbol > ? ConverterDataMemberOrNull ( ISymbol symbol )
116
115
{
117
116
return symbol switch
118
117
{
119
118
{ DeclaredAccessibility : not ( Accessibility . Public or Accessibility . Internal ) } => null ,
120
- IFieldSymbol x when Predicate ( x . Type ) => new KeyValuePair < string , Converter > ( x . Name , new Converter ( x . Type , ( INamedTypeSymbol ) x . Type ) ) ,
121
- IPropertySymbol x when Predicate ( x . Type ) => new KeyValuePair < string , Converter > ( x . Name , new Converter ( x . Type , ( INamedTypeSymbol ) x . Type ) ) ,
122
- IFieldSymbol x when x . Type . Interfaces . FirstOrDefault ( Predicate ) is { } y => new KeyValuePair < string , Converter > ( x . Name , new Converter ( x . Type , y ) ) ,
123
- IPropertySymbol x when x . Type . Interfaces . FirstOrDefault ( Predicate ) is { } y => new KeyValuePair < string , Converter > ( x . Name , new Converter ( x . Type , y ) ) ,
119
+ IFieldSymbol x when Predicate ( x . Type ) => new KeyValuePair < string , ITypeSymbol > ( x . Name , ( ( INamedTypeSymbol ) x . Type ) . TypeArguments [ 0 ] ) ,
120
+ IPropertySymbol x when Predicate ( x . Type ) => new KeyValuePair < string , ITypeSymbol > ( x . Name , ( ( INamedTypeSymbol ) x . Type ) . TypeArguments [ 0 ] ) ,
121
+ IFieldSymbol x when x . Type . Interfaces . FirstOrDefault ( Predicate ) is { } y => new KeyValuePair < string , ITypeSymbol > ( x . Name , y . TypeArguments [ 0 ] ) ,
122
+ IPropertySymbol x when x . Type . Interfaces . FirstOrDefault ( Predicate ) is { } y => new KeyValuePair < string , ITypeSymbol > ( x . Name , y . TypeArguments [ 0 ] ) ,
124
123
_ => null
125
124
} ;
126
125
@@ -138,21 +137,4 @@ static bool Predicate(ITypeSymbol x)
138
137
} ;
139
138
}
140
139
}
141
-
142
- public readonly struct Converter
143
- {
144
- public Converter ( ITypeSymbol originalType , INamedTypeSymbol converterType )
145
- {
146
- OriginalType = originalType ;
147
- ConverterType = converterType ;
148
- T = converterType . TypeArguments [ 0 ] ;
149
- PropertyAccess = OriginalType . Name ;
150
- }
151
-
152
-
153
- public ITypeSymbol OriginalType { get ; }
154
- public INamedTypeSymbol ConverterType { get ; }
155
- public ITypeSymbol T { get ; }
156
- public string PropertyAccess { get ; }
157
- }
158
140
}
0 commit comments