我有这种方法,我不知道对象发送者正在发送什么
void xTreve(object sender, Microsoft.SilverlightMediaFramework.Core.CustomEventArgs<Microsoft.SilverlightMediaFramework.Core.Media.PlaylistItem> e)
{
}
如何查看对象发件人包含的内容
答案 0 :(得分:2)
我会认为你的问题是为了确定sender
的类型,以便你可以使用它。
考虑到这一点,您首先需要获得sender
的类型,然后您可以适当地投射它,以便您可以对其进行操作。
例如,您可以在方法中执行以下操作:
if (sender is TypeA)
{
var iAmA = (TypeA)sender;
// do something A-ish with sender
}
else if (sender is TypeB)
{
var iAmB = (TypeB)sender;
// do something B-ish with sender
}
else
{
// do something else
}
或者,以下内容与前面相同:
Type type = sender.GetType();
if (type == typeof(TypeA))
{
var iAmA = (TypeA)sender;
// do something A-ish with sender
}
else if (type == typeof(TypeB))
{
var iAmB = (TypeB)sender;
// do something B-ish with sender
}
else
{
// do something else
}
答案 1 :(得分:0)
如果对象总是属于同一类型,但您只是不确定该类型是什么,那么在函数内部设置断点并使用visual studio quickwatch窗口进行检查。您将能够看到发送方对象的控件名称和其他属性,以及它的类型。一旦你知道了这种类型,你就知道如果你需要操作它,可以在代码中强制转发发件人。
答案 2 :(得分:0)
如果您需要告诉哪个实例发件人,它取决于发件人是否具有某种属性来识别它。请考虑以下代码:
public void randtest()
{
var rand = new Random();
var obj1 = new object();
var obj2 = new object();
if (rand.Next() % 2 == 1)
{
method(obj1);
}
else
{
method(obj2);
}
}
public void method(object thing)
{
//here i have no way to tell if thing is obj1 or obj2;
}