Czy w C# jest opcja na automatyczne wywołanie funkcji po inicjalizacji obiektu?
Chodzi mi o to, że w C# można zainicjować obiekt na 3 sposoby:
- bezpośrednio w klasie
- w konstruktorze
- w klamrach tworząc obiekt (?) - nie wiem jak to się nazywa
Przykładowo:
class Test
{
public Test(int b = 2)
{
this.b = b;
}
public int a { get; init; } = 1;
public int b { get; init; }
public required int c { get; init; }
}
Test test = new(2)
{
c = 3
};
Chciałbym teraz korzystając z tego trzeciego sposobu wywołać jakąś funkcję inicjalizującą, która zostanie wywołana automatycznie po inicjalizacji wszystkich właściwości.
Jedyny sposób na jaki obecnie wpadłem jak to zrobić to coś w stylu:
class Test
{
public Test()
{}
private void OnInit()
{
}
private int _a;
private int _b;
private int _c;
public required int a
{
get => _a; init
{
_a = value;
OnInit();
}
}
public required int b
{
get => _b; init
{
_b = value;
OnInit();
}
}
public required int c { get => _c; init
{
_c = value;
OnInit();
}
}
}
A może jest jakiś lepszy sposób, który wywoła tylko raz funkcję OnInit?