Şu anda bir nesne oluşturmak ve özellikleri değerlerle doldurmak gibi bazı dinamik yöntemler yapmak için Generic'i kullanıyorum.Bir türden genel değişkenler oluşturma - How? Veya Activator.CreateInstance() parametrelerini() yerine {} özellikleriyle birlikte kullanın?
Türü bilmeden "dinamik olarak" Genel oluşturmak için herhangi bir yolu var mı? Örneğin:
List<String> = new List<String>()
bir predefinied yoldur, ama
List<(object.GetType())> = new List<(object.GetType()>()
çalışma ... Ama can değil mi? nasıl bir "Type" almaya ve Genellemelere kullanmadan o bir nesneyi oluşturun:
Bu
(? çalışan bir benzer bir yaklaşım var mı)public T CreateObject<T>(Hashtable values)
{
// If it has parameterless constructor (I check this beforehand)
T obj = (T)Activator.CreateInstance(typeof(T));
foreach (System.Reflection.PropertyInfo p in typeof(T).GetProperties())
{
// Specifically this doesn't work
var propertyValue = (p.PropertyType)values[p.Name];
// Should work if T2 is generic
// var propertyValue = (T2)values[p.Name];
obj.GetType().GetProperty(p.Name).SetValue(obj, propertyValue, null);
}
}
Yani, kısacası çalışmıyor? Şu ana kadar sadece Generics'i kullandım, ama aynı şekilde değişkenler üzerinde kullanmak mümkün mü? Yöntemden önce bir Genel (T) tanımlamalıyım, bu yüzden onları "oluşturmadan" önce değişkenler üzerinde de yapabilir miyim?
... veya Parametreler yerine Özellikler ile bir nesne oluşturmak için "Etkinleştirici" nasıl kullanılır. Burada yaptığınız gibi: parametrelerle
// değerleri
özellikleriTest t = new Test { Argument1 = "Hello", Argument2 = 123 };
Bu durumda "Liste" yi kullanmak istemiyorum, herhangi bir nesne olmalı. "Type openListType = typeof (bilinmeyen tip);" – Deukalion
Bu cevabın OP'yi nasıl çözdüğünü anlamıyorum. "Activator.CreateInstance() özelliğini {} yerine"() parametresiyle birlikte kullanın. " – Avishek