Witam.
Potrzebuje nakierowania czy gra warta świeczki. Piszę sobie bibliotekę pod mój ukochany system ERP. Mam podział na moduły, które odpowiadają za konkretne moduły w systemie ERP.
PRZYKŁAD
MODUŁ BANK - BankEntry - zapis kasowo/bankowy (KP, KW itp, itd)
public sealed class BankEntry
{
private BankEntry()
{
}
}
public sealed class BankModule
{
readonly IDbConnection? _db;
static BankModule? _instance;
public BankModule(IDbConnection db)
{
_db = db;
}
public static BankModule Init(IDbConnection db)
{
if(_instance is null)
_instance = new BankModule(db);
return _instance;
}
public BankEntry CreateBankEntry()
{
if (_db is null)
throw new Exception("");
var entry = Activator.CreateInstance<BankEntry>();
// default data
return entry;
}
Co chce takim zabiegiem uzyskać? Chce mieć pewność, że obiekt BankEntry
jest poprawnie stworzony. Stąd CreateBankEntry()
, który ma dostęp do bazy i tworzy obiekt z domyślnymi wartościami. Nie chce, aby korzystający z biblioteki mógł stworzyć obiekt w tradycyjny sposób new BankEntry()
. Tak jak widać w kodzie, znalazłem w internetach taki sposób Activator.CreateInstance<BankEntry>();
na utworzenie obiektu z prywatnym konstruktorem i doszło do mnie, że użytkownik biblioteki też będzie mógł tak zrobić
Jest w ogólne opcja, aby utworzenie obiektu BankEntry
była możliwa tylko w obrębie BankModule
?