You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C# MVVM场景下如何判断输入字符串是否匹配模型静态变量名

检查输入是否匹配Variables类的静态字段名

方案1:预定义字段名集合(推荐,性能最优)

用nameof关键字预定义字段名集合,避免硬编码字符串,字段名修改时编译自动同步:

// 在ViewModel或合适位置定义静态集合
private static readonly HashSet<string> VariablesNames = new HashSet<string>
{
    nameof(Variables.Var1),
    nameof(Variables.Var2),
    nameof(Variables.Var3)
};

// 输入有效性检查逻辑
if (VariablesNames.Contains(UserInput.Name))
{
    // 输入符合要求,执行后续逻辑
}

方案2:反射动态获取字段名(适合字段动态增减的场景)

通过反射遍历Variables类的公共静态只读字段,自动提取名称:

// 一次性初始化字段名集合(静态初始化确保只执行一次)
private static readonly HashSet<string> VariablesNames = typeof(Variables)
    .GetFields(BindingFlags.Public | BindingFlags.Static)
    // 筛选只读且类型为UInt16的字段
    .Where(field => field.IsInitOnly && field.FieldType == typeof(ushort))
    .Select(field => field.Name)
    .ToHashSet();

// 检查逻辑同方案1
if (VariablesNames.Contains(UserInput.Name))
{
    // 输入有效
}

额外说明

  • 若需要忽略大小写匹配,可修改Contains方法参数:VariablesNames.Contains(UserInput.Name, StringComparer.OrdinalIgnoreCase)
  • 方案1无反射开销,适合字段固定的场景;方案2无需手动维护集合,适合字段频繁变动的情况

内容的提问来源于stack exchange,提问作者user23586147

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 02:57:41