2011-07-03 4 views
1

Constructor "Delay.vkMessages.vkMessages (string, System.DateTime, string, bool, string)"자체를 호출 할 수 없습니다.이 클래스의 복사본이지만 다른 클래스가 있습니다. 코드).이 오류를 어떻게 해결할 수 있습니까?생성자가 자신을 호출 할 수 없습니다. C#

using System; 
    using System.Collections.Generic; 
    using System.ComponentModel; 
    using ImageCacher; 

    namespace Delay 
    { 
    public class vkMessages : INotifyPropertyChanged 
    { 
     public string Kto { get; private set; } 
     public DateTime Date_Time { get; private set; } 
     public string InOrOut { get; private set; } 
     public string TexT { get; private set; } 
     public bool Read_State { get; private set; } 
     public IEnumerable<vkMessages> Messages 
     { 
      get 
      { 
       if (null == _vk_messages) 
       { 
        _vk_messages = MessageService.GetMessages(InOrOut,() => MessagesLoaded = true); 
       } 
       return _vk_messages; 
      } 
     } 
     private IEnumerable<vkMessages> _vk_messages; 
     public bool MessagesLoaded 
     { 
      get { return _messagesLoaded; } 
      set 
      { 
       _messagesLoaded = value; 
       InvokePropertyChanged("MessagesLoaded"); 
      } 
     } 
     private bool _messagesLoaded; 

     public vkMessages(string kto, DateTime date_time, string text, bool read_state) 
     { 
      Kto = kto; 
      Date_Time = date_time; 
      TexT = text; 
      Read_State = read_state; 
     } 
     public vkMessages(string kto, DateTime date_time, 
      string text, bool read_state,string in_or_out) 

      : this(kto,date_time,text,read_state,in_or_out) 
     { 
      InOrOut = in_or_out; 

     }.... 
+0

잘못된 생성자를 호출하고 있습니다. 첫 번째 전화. ': this (kto, date_time, text, read_state)' – Jan

답변

7

마지막 매개 변수 제거, 당신의 논리가 비뚤어 말했다

public vkMessages(string kto, DateTime date_time, 
        string text, bool read_state,string in_or_out) 
    : this(kto, date_time, text, read_state) 
{ 
    InOrOut = in_or_out; 
} 

, 그것은 둥근 다른 방법으로 (해야하는 모든 작업과 다른 생성자이를 호출해야해야합니까이 생성자 즉, 하나. 마지막으로

public vkMessages(string kto, DateTime date_time, string text, bool read_state) 
    : this(kto, date_time, text, read_state, false) { } 

public vkMessages(string kto, DateTime date_time, 
        string text, bool read_state,string in_or_out) 
{ 
    InOrOut = in_or_out; 
    Kto = kto; 
    Date_Time = date_time; 
    TexT = text; 
    Read_State = read_state; 
} 

, 당신은 .NET 지침을 준수하기 위해 식별자를 수정해야 특히, 클래스는 상위 CAS로 시작하는 PascalCase 규칙을 따라야합니다 전자 편지.

+0

+1 : 저는 현재 크로스 컨퍼런싱 컨스트럭터가 현재 계약하고있는 실수 (double-initialising 등)로 이어지고 있다고 덧붙이고 싶습니다. 나는 개인적으로 C#의 "기능"을 과도하게 사용하지 않고 단지 몇 줄의 코드를 저장하지 않을 것이다. 주의와 함께 사용하십시오. –

관련 문제