c# - 有没有办法使 C# 绑定(bind)静态工作?

标签 c# language-features

这可能适用于其他地方,但在 WinForms 中,当我使用绑定(bind)时,我发现许多方法想要获取要绑定(bind)到的属性的名称。像这样的东西:

class Person
{
    public String Name { get { ... } set { ... } }
    public int Age { get { ... } set { ... } }
}

class PersonView
{
    void Bind(Person p)
    {
        nameControl.Bind(p,"Name");
        ageControl.Bind(p,"Age");
    }
}

我一直遇到的一个大问题是“姓名”和“年龄”被指定为字符串。这意味着如果有人重命名 Person 的属性之一,编译器将无济于事。代码可以正常编译,但绑定(bind)会被破坏。

有没有我错过的解决这个问题的标准方法?感觉我需要一些关键字,也许叫做 stringof 来匹配现有的 typeof。你可以像这样使用它:

ageControl.Bind(p,stringof(p.Age).Name);

stringof 可以返回一些类,这些类具有获取完整路径、部分路径或字符串的属性,因此您可以自己解析它。

这样的事情已经可行了吗?

最佳答案

看看这个code snippet我已经在另一个问题中发布了,它可以帮助你! (但前提是您使用的是 .NET 3.5)

最好的问候
奥利弗·哈纳皮

关于c# - 有没有办法使 C# 绑定(bind)静态工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1466587/

相关文章:

c# - 如何为 Rhino Mocked 对象设置值?

c# - 如何在不使用基本查询的情况下在一项操作中解析多个 linq 查询?

c# - 如何以编程方式获取主 Dns 后缀?

c# - 如何将对象列表转换为 csv?

c# - C# 中的 Noexcept 等价物

c# - 关于 C# 语言规范中隐式转换的问题

c# - 为什么要使用 Clone()?

C# array.sort() 按降序排列多个数组

c++ - c++ 旧功能的更好替代方案?

c++ - 在 C++ 中没有静态构造函数的理由是什么?