2011-02-16 7 views

答えて

7

あなたはすでにそれを渡しているありがとうございますが、唯一の問題は、あなたが抱えているoutputData()

public class Event 
{ 
    public int ID {get; set;} 
} 


public void xmlReader() 
{ 
    Event newEvent = new Event; 

    newEvent.ID = 56; 

    outputData(newEvent); 
} 


public void outputData(object theEvent) 
{ 
    MainContainerDiv.InnerHtml = theEvent.ID; 
} 

xmlReader()からnewEventを渡したいですこれは、次のとおりです。

public void outputData(object theEvent) 
{ 
    MainContainerDiv.InnerHtml = ((Event)theEvent).ID; 
} 

または

public void outputData(Event theEvent) 
{ 
    MainContainerDiv.InnerHtml = theEvent.ID; 
} 

objectを特定の種類(第1の解決策)にキャストするか、特定の種類をパラメータに設定する必要があります(第2の解決策)。もちろん、同じメソッドが多くの異なる呼び出し元によって呼び出される場合は、より大きな問題になります。この場合、より堅牢なアプローチは、パラメータの型をチェックすることです:私はあなたが意味だと思う何

public void outputData(Event theEvent) 
1

変更

public void outputData(object theEvent) 

を私からtheEventを回すんか」ですオブジェクトをEventに戻します。この場合、

public void outputData(object theEvent) 
{ 
    MainContainerDiv.InnerHtml = ((Event)theEvent).ID; 
} 
それはむしろ、オブジェクトパラメータよりも、イベントのパラメータを取るように

は、より良いオプションは、出力データのためのメソッドシグネチャを変更するには、次のようになります。

public void outputData(Event theEvent) 
{ 
    MainContainerDiv.InnerHtml = theEvent.ID; 
} 

をした場合、何らかの理由で、あなたがobjectとしてtheEventを渡す必要があり、しかし、あなたはoutputData内で使用するために複数回必要になることがあり、第一の方法のバリエーションがあります:

public void outputData(object theEvent) 
{ 
    var event = (Event)theEvent; 
    MainContainerDiv.InnerHtml = event.ID; 
    // 
    // You can now use "event" as a strongly typed Event object for any further 
    // required lines of code 
} 
1

public void outputData(object theEvent) 
{ 
    if (theEvent is Event) 
    { 
     MainContainerDiv.InnerHtml = (theEvent as Evenet).ID; 
    } 
    // process others as necessary 
} 
0

あなたは正しくオブジェクトを渡しますが渡している鋳造アップすることです....

OutputDataがタイプイベントのオブジェクトのみを受け入れる場合、オブジェクトの定義は

public void outputData (Event theEvent) { 
    ...... 
} 
関連する問題