У меня есть функция, как показано ниже.
public static object getClassInstance(string key, object constructorParameter)
{
// body here
}
Переменная ключа будет иметь имя моего класса.Мне нужно вернуть новый экземпляр класса.Если constructorParm равен нулю, то мне нужно загрузить класс с конструктором по умолчанию, в противном случае передается параметр конструктора.Как мне это сделать ?
ADD:
Я написал код, подобный этому
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using Catalyst.BO.StudentProfileBO;
using Catalyst.BO.ReportBO;
using Catalyst.DAL.ReportDAO;
using System.Collections;
using System.Data;
namespace Catalyst.BO.Factory
{
public class CFactory
{
public static object getClassInstance(string key, params object[] constructorArgs)
{
string assemblyPath = null;
string customClassName = key.Substring(0, 1) + "Custom" + key.Substring(1);
DataSet objDataset = getAssemblyInfo(key);
if (objDataset != null && objDataset.Tables.Count > 0 && objDataset.Tables[0].Rows.Count > 0)
{
assemblyPath = objDataset.Tables[0].Rows[0]["ACA_ASSEMBLY_PATH"].ToString();
}
Assembly assembly;
Type type;
if (assemblyPath != null && assemblyPath != string.Empty)
{
assembly = Assembly.LoadFile(assemblyPath);
type = assembly.GetType(customClassName);
}
else // if no customisation
{
type = Type.GetType(key);
}
object classInstance = constructorArgs == null ? Activator.CreateInstance(type) : Activator.CreateInstance(type, constructorArgs);
if (classInstance == null) throw new Exception("broke");
return classInstance;
}
}
}
ключ, переданный в функцию - "CReportBO"CReportBO доступен в области действия функции.но в // если нет секции настройки (то есть type = Type.GetType (key)), type возвращает меня null.что не так?