سؤال

لدي قسم مثل هذا

<mySection type="Namespace.MyClass, AssemblyName" />

في الكود الخاص بي ، أحتاج إلى إنشاء مثيل MyClass ، لذا فإن ما أفعله هو شيء من هذا القبيل:

string type = GetMySectionType(); // "Namespace.MyClass, AssemblyName"

var typeParts = type.Split(',');
var className = typeParts[0].Trim();
var assemblyName = typeParts[1].Trim();
var assembly = Assembly.Load(assemblyName);
var myObj = (MyClass)assembly.CreateInstance(className);

أنا متأكد من أن هناك طريقة أفضل للقيام بذلك ، دون تقسيم السلسلة ، لكنني لم أجد أي شيء عنها في Google.

تحرير: هل هناك بعض البناء في الأشياء من الإطار الذي يحصل على نوع "النوع" دون القيام بأي شيء؟

هل كانت مفيدة؟

المحلول

يمكنك استخدام طريقة gettype (سلسلة typename). على سبيل المثال مثل هذا:

string type = GetMySectionType(); // "Namespace.MyClass, AssemblyName"
Type myType = Type.GetType(type);
var myObj = (MyClass)Activator.CreateInstance(myType);

نرى هذه الصفحة لمزيد من المعلومات.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top