引用未定义的属性

时间:2013-09-24 07:06:04

标签: c#

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

 private void Document_TextChanged(object sender, EventArgs e)

我知道sender对象将始终具有一个名为text的属性,但编译器显然不知道这一点。有没有一个很好的方法来引用这个属性而不会出现编译器错误?显然sender.property不起作用。

2 个答案:

答案 0 :(得分:4)

使用演员。如果您始终确定发件人的类型为SomeType,则只需使用

即可
SomeType senderAsSomeType = (SomeType)sender;

如果您无法确定类型是什么,则可以使用as运算符来转换值,如果它是SomeType类型,或者如果不是,则使用null

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

答案 1 :(得分:2)

另一种选择是使用dynamic,如果有几个类的可能性与text属性如下:

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