簡體   English   中英

如何解析對象發送者

[英]how to parse for object sender

我有這種方法,我不知道對象發送者發送了什么

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;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM