-
Couldn't load subscription status.
- Fork 174
Closed
Labels
enhancementRequires or request to feature enhancementRequires or request to feature enhancement
Description
SerializerGenerator.GenerateCode returns multiple paths with SerializerCodeGenerationConfiguration.IsRecursive = true.
I try to generated serializer set to SerializationContext.ResolveSerializer but ResolveSerializer needs type,
I've retrieved type from path by Regex.Replace(Path.GetFileNameWithoutExtension(path), "Serializer$", "").Replace("_", ".").
But it replace all _ to . so if class name contains _ then can't retrieve correctly.
// My T4 Sample
static void SerializationContext_ResolveSerializer(object sender, ResolveSerializerEventArgs e)
{
<# foreach(var path in generatedSerializerPaths) { */ #>
if (e.TargetType == typeof(<#= Regex.Replace(Path.GetFileNameWithoutExtension(path), "Serializer$", "").Replace("_", ".") #>)) e.SetSerializer(new <#= Path.GetFileNameWithoutExtension(path) #>(e.Context));
<# } #>
}// generated code
public static class Serializer
{
static readonly SerializationContext serializationContext = new SerializationContext
{
EnumSerializationMethod = EnumSerializationMethod.ByUnderlyingValue,
SerializationMethod = SerializationMethod.Array
};
static Serializer()
{
serializationContext.ResolveSerializer += SerializationContext_ResolveSerializer;
}
static void SerializationContext_ResolveSerializer(object sender, ResolveSerializerEventArgs e)
{
if (e.TargetType == typeof(Namespace.MyClass)) e.SetSerializer(new Namespace_MyClassSerializer(e.Context));
if (e.TargetType == typeof(Namespace.MyClass2)) e.SetSerializer(new Namespace_MyClass2Serializer(e.Context));
}
}Metadata
Metadata
Assignees
Labels
enhancementRequires or request to feature enhancementRequires or request to feature enhancement