Zobacz pytanie osadzone w komentarzu poniżej.Podczas łączenia się z konstruktorem podstawowym, w jaki sposób mogę ponownie użyć kodu inicjalizacyjnego w przeciążeniu
public class CustomException : Exception
{
private readonly string _customField;
public CustomException(string customField, string message)
: base(message)
{
// What's the best way to reuse the customField initialization code in the
// overloaded constructor? Something like this(customField)
}
public CustomException(string customField)
{
_customField = customField;
}
}
Jestem otwarta na rozważenie alternatywnych implementacji, które można ponownie użyć konstruktora bazowy i minimalizują kod inicjalizacji. Chciałbym, aby _customField był readonly, co nie jest możliwe, jeśli wyodrębnię osobną metodę inicjowania.
Błąd kompilacji: nie można przypisać do pola tylko do odczytu (z wyjątkiem konstruktora lub inicjalizatora zmiennych). Jak wspomniano w moim pytaniu, chciałbym zachować pole tylko do odczytu. –
@ ZaidMasud Nie, błąd kompilacji. W 'Init'' _customField' jest parametrem 'out', który odnosi się do pola, ale nie do samego pola. – hvd
Ahh ... zobacz edycję teraz. Interesująca składnia, aby zobaczyć parametr zarówno jako out, jak i out. Musisz to przetestować. –