namespace AspNetCore.Extensions.Websockets; public abstract class WebSocketConverterAttributeBase : Attribute { public abstract Type ConverterType { get; } } [AttributeUsage(AttributeTargets.Class)] public sealed class WebSocketConverterAttribute : WebSocketConverterAttributeBase where TConverter : WebSocketMessageConverter, new() { public override sealed Type ConverterType => typeof(TConverter); }