引用未定义的属性

本文关键字:属性 未定义 引用 | 更新日期: 2023-09-27 18:32:35

所以我有一个非常简单的问题。 我有一个接收 2 个参数的函数。 以下是函数定义:

 private void Document_TextChanged(object sender, EventArgs e)

我知道发送方对象将始终具有一个名为 text 的属性,但编译器显然不知道这一点。 有没有一种好方法可以在不出现编译器错误的情况下引用此属性? 显然 sender.property 不起作用。

引用未定义的属性

使用强制转换。如果您始终确定发件人的类型为 SomeType,则可以简单地使用

SomeType senderAsSomeType = (SomeType)sender;

如果无法确定类型是什么,可以使用 as 运算符强制转换值(如果它属于 SomeType)或获取null(如果不是):

SomeType senderAsSomeType = sender as SomeType;
if (senderAsSomeType != null) {
   //do something
}

另一种选择是使用动态,如果有机会有几个类具有这样的文本属性:

dynamic textProperty = sender;
Console.WriteLine(textProperty.Text);