2013-07-25 68 views
2

我有以下方法,我試圖從名爲ApptDateTime的列中獲取數據,並將其設置爲公共類,以便我可以將該值傳遞給另一個方法。將一個返回值設置爲一個類

這就是我試圖在公共類設置數值:

public class ApptData 
{ 
    public DateTime _currentAppointment { get; set; } 
} 

我選擇的價值_currentAppointment,我希望能夠從public class ApptData調用它,然後傳遞到一個方法。

EX:history.LoadHistory(ApptData appointment, daysOfHistory);

private void dgvPendingSB_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     if (e.AddedItems.Count > 0) 
     { 
      DataRowView row = (DataRowView)e.AddedItems[0]; 

      int accNum = -1; 
      int resourceId = Convert.ToInt32(row["ResourceId"]); 
      int locationId = Convert.ToInt32(row["LocationId"]); 
      int patientId = Convert.ToInt32(row["PatientId"]); 
      _currentAppointment = Convert.ToDateTime(row["ApptDate"]); 
      m_objPatient = Convert.ToInt32(row["PatientId"]); 
      _stringPatientName = row["PatientName"].ToString(); 
      // ... 
     } 
    } 
+0

您遇到的確切錯誤是什麼? – HuorSwords

+0

我對您的「我選擇價值'_currentAppointment'的聲明感到困惑,我希望能夠從'public class ApptData'中調用它。」您正在將行數據存儲到ApptData類的實例中,但是您沒有實例化該類的實例。你發佈的代碼不應該用於'_currentAppointment = ...',因爲一個屬性不能在沒有附加到對象的情況下浮動。 –

+0

公共屬性應該像'CurrentAppointment'一樣放入,而不是'_currentAppointment'。 –

回答

3

如果你想一個新實例的ApptDataDataRowView組進入LoadHistory一個值,你會想是這樣的:

history.LoadHistory(new ApptData() 
    { 
     _currentAppointment = Convert.ToDateTime(row["ApptDate"]) 
    }, daysOfHistory); 

另外,我強烈建議你不要開始public屬性,字段或方法帶有下劃線核心。這只是奇怪

+0

同意,下劃線應該僅用於成員變量,但肯定不適用於對象屬性。 –

0

您需要實例的ApptData一個實例,爲__currentAppointment設置的值,然後傳遞到LoadHistory方法,像這樣:

var theAppointmentData = new ApptData(); 
theAppointmentData._currentAppointment = Convert.ToDateTime(row["ApptDate"]); 

然後,你可以打電話給你的LoadHistory方法,像這樣:

history.LoadHistory(theAppointmentData, daysOfHistory); 
0

不太確定我理解你的問題。你想使用類本身而不是一個實例(是你的意思是「公共類?」)?如果是的話......你可以使用默認的對象攜帶您的財產:

public class ApptData 
{ 
    private static ApptData _defaultInstance; 

    public static ApptData Default 
    { 
     if (_defaultInstance == null) 
     { 
      _defaultInstance = new ApptData(); 
     } 
     return _defaultInstance; 
    } 

    public DateTime CurrentAppointment { get; set; } 
} 

您可以訪問屬性是這樣的:

ApptData.Default.CurrentAppointment = Convert.ToDateTime(row["ApptDate"]); 
    history.LoadHistory(ApptData.Default, daysOfHistory); 

但對我來說這是數據傳遞的一個非常尷尬的方式。唯一可以使用的是,您可以從ApptData類可見的任何位置訪問該屬性的值。當然,你一次只能處理一個值。我會做前面的讀者所建議的,並將所有東西都作爲實例化對象。

相關問題