加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 间接改变类参数

发布时间:2020-12-15 22:24:09 所属栏目:百科 来源:网络整理
导读:我正在使用反射在TreeListView( ObjectListView)上显示一个类. TreeListView与ChildrenGetter()委托一起使用,该委托获取要显示的节点(参见 here). 为了显示类(我们称之为反射类),树的根是类的实例,而ChildrenGetter(对象x)使用反射来返回反射类的每个子节点
我正在使用反射在TreeListView( ObjectListView)上显示一个类.
TreeListView与ChildrenGetter()委托一起使用,该委托获取要显示的节点(参见 here).

为了显示类(我们称之为反射类),树的根是类的实例,而ChildrenGetter(对象x)使用反射来返回反射类的每个子节点的实例.

例如,对于这个类:

public class Folder
{
    public int BuildNumber { get; set; }
    public int MaxSpeed { get; set; }
}

根将是Folder的一个实例,它将有2个子节点,包含BuildNumber和MaxSpeed的值.

这样可以,但仅用于显示.我希望能够在UI上更改BuildNumber和MaxSpeed的值,以便它们实际上可以更改树根所包含的反射类的实例.

所以有两种方法可以做到这一点:

>保存树节点中每个节点的父(拥有类),并为每个节点创建“地址路径”,然后使用反射查找已更改的节点并实际更改它(在反射的类实例中)
>而不是包含反射类参数值的树的节点,它们可以保存某种指向反射类实例中的参数的指针.

解决方案2甚至可能吗?在C#中是否有一些指针可以允许这样的功能?

你能想到更好的解决方案吗?

笔记:

>树可以包含其他类的类,深度不受限制.现在,我没有在任何地方使用结构
>我无法改变反映的课程.它是自动生成的
>首选安全代码,但如果没有其他可用的安全代码,则可以使用

解决方法

如果您能够将一些元数据附加到您创建的控件/树项,则可以创建一个Action< T>并将其分配给标签或类似的东西.

如果你有它的实例,你可以这样(使用字符串作为样本数据类型):

Action<string> action = val => instance.X = val;

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读