2016-10-14 4 views
0

Je suis en train de relire un certain nombre de propriétés dans le constructeur d'un objet. L'une des propriétés est calculée à partir d'une autre propriété.Comment ajouter assigner une valeur de propriété calculée à un objet?

Mais quand je crée cet objet la valeur calculée Implementation_End_String valeur de la propriété est toujours nulle:

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

      implementationEndString= DataTimeExtensions.NullableDateTimeToString(Implementation_End); 
     } 
    } 

Question:

Comment pouvez-vous passer dans une propriété calculée à un constructeur d'objet?

C'est un point essentiel de la cteur et propriété calculée:

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

double possible de [? Qu'est-ce qu'un NullReferenceException, et comment puis-je résoudre ce problème] (http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-and-how-do-i-fix-it) – mybirthname

Répondre

1

Pas besoin du champ implementationEndString. Il suffit de faire Implementation_End_String une propriété en lecture seule et de créer la chaîne de l'autre propriété en cas de besoin:

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

Ecrire cette façon.

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. 
} 

Après que lorsque vous obtenez la valeur de la propriété, il prendra la valeur de DataTimeExtensions.NullableDateTimeToString(Implementation_End);. Dans votre code, lorsque vous essayez d'obtenir l'outil retourne null, car implementationEndString est null.

+0

Cela a donné une erreur de compilation 'Un initialiseur de champ ne peut pas référencer le champ, la méthode ou la propriété non-statique. Clairement parce que NullableDateTimeToString est une méthode statique. Je ne sais pas quoi faire dans ce cas. –