我有這樣的方法,我不知道是什麼物體發件人發送如何解析的對象發件人
void xTreve(object sender, Microsoft.SilverlightMediaFramework.Core.CustomEventArgs<Microsoft.SilverlightMediaFramework.Core.Media.PlaylistItem> e)
{
}
我怎麼檢查,看看是什麼對象發件人包含
我有這樣的方法,我不知道是什麼物體發件人發送如何解析的對象發件人
void xTreve(object sender, Microsoft.SilverlightMediaFramework.Core.CustomEventArgs<Microsoft.SilverlightMediaFramework.Core.Media.PlaylistItem> e)
{
}
我怎麼檢查,看看是什麼對象發件人包含
我要帶它的問題是確定什麼樣的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
}
如果物體總是將是相同的類型,但你只是不確定該類型是什麼,然後在函數內部設置一個斷點,並使用visual studio quickwatch窗口來檢查它。您將能夠看到發件人對象的控件名稱和其他屬性,以及它的類型。一旦你知道了類型,你就會知道如何在代碼中投入發件人,如果你需要操縱它的話。
如果您需要告訴哪個實例發件人,它取決於發件人是否有某種屬性來標識它。考慮下面的代碼:
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;
}
公平地說,這會給你的對象的類型,而不是「哪個對象」通常意味着哪個實例。 –
當然,同意。第一步將涉及獲得'發件人'類型,然後進行轉換以獲得'發件人'的成員。我會編輯更具體一點。 – arcain