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

如何通过Tag类及反射设置BFrame类的Value属性?

如何通过Tag类设置BFrame的Value属性?

先看你的类定义,其实有两种实现方式——先给你说最直接简单的方案,再讲反射的写法(毕竟你已经在写反射相关的代码了,推测可能有特殊场景需求)。

情况1:直接访问(推荐,无需反射)

你的Tag类的Frame属性是公共可读的,而且BFrame的Value是可读写的,完全不需要绕反射,直接写就行:

public void func(Tag tag, string newValue) {
    // 先做空值检查,避免空引用异常
    if (tag?.Frame != null) {
        tag.Frame.Value = newValue;
    }
}

情况2:必须用反射的场景

如果是因为通用逻辑或者其他限制必须用反射来操作,那可以按步骤来:先拿到Tag的Frame属性实例,再获取BFrame的Value属性并设置值:

using System.Reflection;

public void func(Tag tag, string newValue) {
    if (tag == null) return;

    // 1. 获取Tag类的Frame属性
    PropertyInfo frameProp = tag.GetType().GetProperty("Frame");
    if (frameProp == null) return;

    // 2. 获取Frame属性对应的BFrame实例
    var frameInstance = frameProp.GetValue(tag) as BFrame;
    if (frameInstance == null) return;

    // 3. 获取BFrame类的Value属性
    PropertyInfo valueProp = typeof(BFrame).GetProperty("Value");
    if (valueProp == null) return;

    // 4. 设置Value的新值
    valueProp.SetValue(frameInstance, newValue);
}

注意:不管哪种方式,都要做好空值判断,不然很容易出现NullReferenceException——比如tag本身是null,或者tag.Frame返回null的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 04:20:57