2016-10-14 6 views
0

Я читаю несколько свойств в конструкторе объекта. Одним из свойств является вычисление другого свойства.Как добавить присвоенное значение свойства объекту?

Но когда я создаю этот объект вычисленного значение свойства Implementation_End_String всегда нуль:

private string implementationEndString; 
    public string Implementation_End_String { 
     get{ 
      return implementationEndString; 
     } 
     set { 

      implementationEndString= DataTimeExtensions.NullableDateTimeToString(Implementation_End); 
     } 
    } 

Вопрос:

Как можно передать в рассчитанной собственности конструктора объекта?

Это суть в CTOR и вычислил свойство:

private string implementationEndString; 
    public string Implementation_End_String { 
     get{ 
      return implementationEndString; 
     } 
     set { 

      implementationEndString= DataTimeExtensions.NullableDateTimeToString(Implementation_End); 
     } 
    } 



    public DateTime? Implementation_End { get; set; } 


    public ReleaseStatus(DateTime? implementationEnd) 
    { 

     //value is assigned at runtime 
     Implementation_End = changeRequestPlannedImplementationEnd; 



    } 
+0

Возможный дубликат [? Что такое NullReferenceException, и как это исправить] (http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) – mybirthname

ответ

1

Не нужно поле implementationEndString. Просто сделайте Implementation_End_String свойство только для чтения и создания строки из другого имущества, когда это необходимо:

public string Implementation_End_String 
{ 
    get 
    { 
     return DataTimeExtensions.NullableDateTimeToString(Implementation_End); 
    } 
} 
1

Написать это таким образом.

private string implementationEndString = DataTimeExtensions.NullableDateTimeToString(Implementation_End); 

public string Implementation_End_String 
{ 
    get{ return implementationEndString; } 
    set{ implementationEndString=value; } 
    //if you don't want this property to be not changed, just remove the setter. 
} 

После этого, когда вы получите значение свойства будет принимать значение DataTimeExtensions.NullableDateTimeToString(Implementation_End);. В вашем коде, когда вы пытаетесь получить реализацию, возвращается null, поскольку реализацияEndString равна null.

+0

Это дало ошибку компилятора 'Инициализатор поля не может ссылаться на нестатическое поле, метод или свойство'. Очевидно, что NullableDateTimeToString является статическим методом. Не уверен, что делать в этом случае. –