30 lines
983 B
C#
30 lines
983 B
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Reflection;
|
|||
|
|
using System.Text;
|
|||
|
|
using System.Threading.Tasks;
|
|||
|
|
|
|||
|
|
namespace JiShe.CollectBus.Protocol.Contracts
|
|||
|
|
{
|
|||
|
|
public class ProtocolConstExtensions
|
|||
|
|
{
|
|||
|
|
/// <summary>
|
|||
|
|
/// 自动获取 ProtocolConst 类中所有 Kafka 主题名称
|
|||
|
|
/// (通过反射筛选 public const string 且字段名以 "EventName" 结尾的常量)
|
|||
|
|
/// </summary>
|
|||
|
|
public static List<string> GetAllTopicNames()
|
|||
|
|
{
|
|||
|
|
return typeof(ProtocolConst)
|
|||
|
|
.GetFields(BindingFlags.Public | BindingFlags.Static)
|
|||
|
|
.Where(f =>
|
|||
|
|
f.IsLiteral &&
|
|||
|
|
!f.IsInitOnly &&
|
|||
|
|
f.FieldType == typeof(string) &&
|
|||
|
|
f.Name.EndsWith("EventName")) // 通过命名规则过滤主题字段
|
|||
|
|
.Select(f => (string)f.GetRawConstantValue()!)
|
|||
|
|
.ToList();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|