Optimisation du code => Avertissement CA2214
Bonjour @ tous,
J'ai lancé l'analyse de mon code via VS, et j'ai plusieurs fois le message :
Code:
1 2 3 4
| Avertissement CA2214 'tblContact.tblContact(enmFormatFiltre)' contient une chaîne d'appel aboutissant à un appel vers une méthode virtuelle définie par la classe. Vérifiez le parcours de pile suivant et analysez-y toutes les conséquences imprévisibles*:
tblContact..ctor(enmFormatFiltre)
tblContact.set_isCompany(Nullable<Boolean>):Void
vmBase.OnPropertyChanged(String):Void Ubrik ... |
J'ai donc été me documenter :
https://msdn.microsoft.com/fr-fr/library/ms182331.aspx
Et en fait, j'ai compris que c'est parce que j'affecte des propriétés dans le constructeur d'une classe surchargée.
Il est vrai que je faisait ça :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
public class tblContact : tblModel {
string _lastName, _firstName;
bool? _isCompany;
public string firstName { get { return _firstName; } set { _firstName = value; OnPropertyChanged(nameof(firstName)); } }
public string lastName { get { return _lastName; } set { _lastName = value; OnPropertyChanged(nameof(lastName)); } }
public bool? isCompany { get { return _isCompany; } set { _isCompany = value; OnPropertyChanged(nameof(isCompany)); } }
public ObservableCollection<tblEmail> emails { get; set; }
public tblContact(enmFormatFiltre formatFiltre) : base(formatFiltre) { // Constructeur
isCompany = false;
lastName = string.Empty;
firstName = string.Empty;
emails = new ObservableCollection<tblEmail>();
}
} |
Du coup, si j'ai pu déporter les types simples, comment je peux faire pour les types instanciables ???
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13
|
public class tblContact : tblModel {
string _lastName, _firstName=string.Empty;
bool? _isCompany = false;
public string firstName { get { return _firstName; } set { _firstName = value; OnPropertyChanged(nameof(firstName)); } }
public string lastName { get { return _lastName; } set { _lastName = value; OnPropertyChanged(nameof(lastName)); } }
public bool? isCompany { get { return _isCompany; } set { _isCompany = value; OnPropertyChanged(nameof(isCompany)); } }
public ObservableCollection<tblEmail> emails { get; set; }
public tblContact(enmFormatFiltre formatFiltre) : base(formatFiltre) { // Constructeur
emails = new ObservableCollection<tblEmail>();
}
} |
Merci d'avance de vos lumières.