2011-02-16 149 views
1

如何将对象从一种方法传递给另一种方法? 从下面的代码,我想从xmlReader()通过newEventoutputData()ASP.NET C#将对象传递给方法

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

谢谢 乔丹

+0

的建议的工作。感谢大家的快速和有益的回应! – jtlowe 2011-02-16 17:28:58

回答

7

你已经通过它,但你遇到的唯一问题是这样的:

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

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

你必须要么投了object特定类型(第一溶液)或设置特定类型的参数(第二溶液)。如果同一个方法被许多不同的调用者调用,这当然是一个更大的问题。在这种情况下,更可靠的方法是检查参数类型:

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

变化

public void outputData(object theEvent) 

public void outputData(Event theEvent) 
1

我认为你的意思是“我怎么把theEvent从对象回到Event“,在这种情况下:

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

更好的选择将改变outputData方法签名,因此,它需要一个事件参数,而不是一个对象参数:

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

如果由于某种原因,你需要通过theEventobject,但是你可能需要内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 
} 
0

您正确地传递对象,但传球达铸造....

如果OutputData将只会接受类型事件的对象,则对象的界定及将b

public void outputData (Event theEvent) { 
    ...... 
}