içinde kurucu argümanları bulunan genel türleri kaydetme Basit Enjektörde (
(en son SimpleInjector sürüm v3) argümanları olan genel türler nasıl kaydedilir;Simple Injector
Arabirim;
public interface IDbHelper<T> where T : class
{
void SetInformation(string title, string description);
}
Sınıf uygulamam;
public class JsonDbWrapper<T> : IDbHelper<T> where T : class
{
private readonly JsonDb<T> _jsonFile;
public JsonDbWrapper(string path, string filename, Encoding encoding)
{
_jsonFile = JsonDb<T>.GetInstance(path, filename, encoding);
}
public void SetInformation(string title, string description) { ... }
}
Ben tabii o bir istisna atıyor aşağıdaki çalıştı:
container.Register(typeof(IDbHelper<>), typeof(JsonDbWrapper<>));
İstisna olduğu;
Error: System.ArgumentException: The constructor of type
JsonDbWrapper<T>
contains parameter 'path' of type String which can not be used for constructor injection.
Yol, dosya adı ve kodlamayı ayarlamak için bir yöntem oluşturabilirim. Ama ben onları kurucuda istiyorum. Basit Enjektör'ü kullanmanın uygun yolunu öğrenmek istiyorum. Eğer ortak db sınıfı (örn Kişi) her yardımcı kaydettirmek istiyorsanız
Are yol, dosya adı ve kodlama sabitlerini kayıt, ya da jenerik başına değişir yapmak yazın? Tüm 'T'lerin aynı değerleri var mı? – Steven
@Steven Belirsiz bir soru için üzgünüz. Bir örnek: yol "D: \ MyJsonFolder \", dosyaAdı: "persons.json" çünkü T kişi sınıfıdır. Başka bir örnek: yol "D: \ MyJsonFolder \", dosyaAdı: "accounts.json" çünkü T Hesap sınıfı vb. –
Turbot'un cevabı doğru – Steven