2011-07-14 8 views
2

次のコードの最後の行からスタックオーバーフローエラーが発生します。私は理由を見ることができません。何か案は?ToArray()でスタックオーバーフロー

 var slots = from a in db.AvailableAppointments 
        where a.RequestID == reqId 
        select new 
        DataLayer.DateAndTimeslot 
        { 
         date = a.Date.ToShortDateString(), 
         timeSlot = a.Timeslot 
        }; 

     returnValue.DateAndTimeslot = slots.ToArray(); 

マイククラス;

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Runtime.Serialization; 

namespace DataLayer 
{ 
    [DataContract(Namespace = "http://wholesale.fluidata.co.uk/bt/AppointmentAvailabilityResponse")] 

    public class AppointmentAvailabilityResponse : DataLayer.WebserviceMessage 
    { 
     DateAndTimeslot[] _dateAndTimeSlot; 

     [DataMember] 
     public DateAndTimeslot[] DateAndTimeslot 
     { 
      get { return _dateAndTimeSlot; } 
      set { _dateAndTimeSlot = value; } 
     } 

    } 

    public class DateAndTimeslot 
    { 
     private String _date; 
     private String _timeSlot; 

     [DataMember] 
     public string date 
     { 
      get { return this._date; } 
      set {_date = value;} 
     } 

     [DataMember] 
     public string timeSlot 
     { 
      get { return this.timeSlot; } 
      set {_timeSlot = value;} 
     } 

    } 
} 

マイテーブル(例ではデータ)ここで

ID RequestID Date   Timeslot 
171 3214 2005-12-28 00:00:00.000 EV 
172 3214 2005-12-28 00:00:00.000 EV 
173 3214 2005-12-29 00:00:00.000 EV 
174 3214 2005-12-29 00:00:00.000 EV 
175 3214 2005-12-30 00:00:00.000 EV 
176 3214 2005-12-30 00:00:00.000 EV 


CREATE TABLE [dbo].[AvailableAppointments](
    [ID] [int] IDENTITY(1,1) NOT NULL, 
    [RequestID] [int] NOT NULL, 
    [Date] [datetime] NOT NULL, 
    [Timeslot] [varchar](21) NOT NULL, 
CONSTRAINT [PK_AvalibleAppointments] PRIMARY KEY CLUSTERED 
(
    [ID] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 

答えて

7

[DataMember] 
public string timeSlot 
{ 
    get { return this.timeSlot; } 
    set { _timeSlot = value; } 
} 

お知らせゲッターと再帰呼び出しで_を逃しますか?

は次のようになります。

[DataMember] 
public string timeSlot 
{ 
    get { return this._timeSlot; } 
    set { _timeSlot = value; } 
} 

ちなみに、私はエラーのこれらの種類は、忘却の彼方に入ったC#でAuto implemented propertiesを使用し始めてから:

[DataMember] 
public string TimeSlot { get; set; } 

ちょうどつべこべのサイドノート:それは良いですプロパティ名は大文字(timeSlotの代わりにTimeSlot)で始まるようにしてください。

+1

+1前にこの1を引くのより良い機会を提供しているだろうな特性のために資本キャメルケースを使用した場所です。 – spender

+0

完璧な感謝:) –

3

あなたの再帰はここにあります。あなたはここに_必要があります。get { return this.timeSlot; }

public string timeSlot 
    { 
     get { return this.timeSlot; } 
     set {_timeSlot = value;} 
    } 
関連する問題