2

我有以下方法,我试图从名为的列中获取数据ApptDateTime并将其设置为公共类,以便我可以将值传递给另一个方法。

这就是我试图在公共类中设置值:

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

我选择了这个值_currentAppointment,我希望能够从中调用它,public class ApptData然后将它传递给一个方法。

前任: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();
            // ...
        }
     }
4

3 回答 3

3

如果您尝试使用集合中的值传递into的新实例,您将需要以下内容:ApptDataLoadHistoryDataRowView

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

另外,我强烈建议您不要使用下划线开头public的属性、字段或方法。这很奇怪

于 2013-07-25T19:13:35.297 回答
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 类可见的任何地方访问该属性的值。当然,您一次只能处理一个值。我会按照以前读者的建议去做,并将所有内容都作为实例化对象。

于 2013-07-25T19:31:23.960 回答
0

您需要实例化 的实例ApptData,设置值__currentAppointment,然后将其传递给LoadHistory方法,如下所示:

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

然后你可以调用你的LoadHistory方法,像这样:

history.LoadHistory(theAppointmentData, daysOfHistory);
于 2013-07-25T19:16:46.017 回答