Mi código esType.GetType (typeName cadena) devuelve un valor nulo
type = Type.GetType(key);
llave que me pase es un nombre calificado de espacio de nombres.
Mi código está en BusinessLayer. Estoy creando una instancia de DataAccessLayer. La referencia de DataAccessLayer se agrega a BusinessLayer.
Recibo el error como "No se pudo cargar el tipo 'Catalyst.DAL.ExamDAO.CExamDAO' del ensamblado 'BusinessLayer, Version = 1.9.3.0, Culture = neutral, PublicKeyToken = null'.".
¿Qué debo hacer para especificar explícitamente que la clase es de DataAccessLayer?
Vale clave es "Catalyst.DAL.ExamDAO.CExamDAO"
Editar:
Mi código actual es
public static object getClassInstance(string key, params object[] constructorArgs)
{
string assemblyPath = null;
string customClassName = null;
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();
customClassName = objDataset.Tables[0].Rows[0]["ACA_CLASS_NAME"].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;
}
Estoy tratando de cargar las clases por defecto si hay sin personalización. El método está en BO. Si paso la clave como nombres calificados del espacio de nombre de cualquier tipo de Bo, se convierte. Pero tipo DAO
¿Por qué haces de esta manera en lugar de 'nueva CExamDAO()'? si es cierto que "la referencia de DataAccessLayer se agrega a BusinessLayer", entonces no debería haber ninguna razón para que no pueda usar el operador 'new'. O si realmente solo quiere un tipo de referencia, entonces 'typeof (CExamDAO)' –
Danos el valor de texto de "clave". – xanatos
@ Adam Ralph. En realidad, necesito cambiar entre ensambles personalizados y ensamblaje predeterminado. Yo no puse ese código aquí. –