My code is
type = Type.GetType(key);
Key which i pass is a namespace qualified name .
My code is in BusinessLayer. I am creating a instance of DataAccessLayer.
DataAccessLayer reference is added to BusinessLayer.
I am getting the error as “Could not load type ‘Catalyst.DAL.ExamDAO.CExamDAO’ from assembly ‘BusinessLayer, Version=1.9.3.0, Culture=neutral, PublicKeyToken=null’.”.
What should i do to specify explicitly thats the class is from DataAccessLayer ?
Key vale is “Catalyst.DAL.ExamDAO.CExamDAO”
Edit :
My actual code is
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;
}
I am trying to load the default classes if there is no customization . Method is in BO .
If i pass the key as namespace qualified names of any Bo type it converts . But DAO type it wont
If you know that whatever type it is will be within
DataAccessLayer, then I’d get anAssemblyreference as simply as possible, e.g.An alternative is to use
Type.GetTypewith an assembly-qualified name, but that’s more long-winded in terms of specifying the type name.