- Notifications
You must be signed in to change notification settings - 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