mio codice èType.GetType (stringa typeName) restituisce null
type = Type.GetType(key);
Key che mi passa è un namespace nome qualificato.
Il mio codice è in BusinessLayer. Sto creando un'istanza di DataAccessLayer. Il riferimento DataAccessLayer viene aggiunto a BusinessLayer.
sto ottenendo l'errore come "Impossibile caricare il tipo 'Catalyst.DAL.ExamDAO.CExamDAO' dal assembly 'BusinessLayer, Version = 1.9.3.0, Culture = neutral, PublicKeyToken = null'.".
Cosa devo fare per specificare esplicitamente che la classe proviene da DataAccessLayer?
Vale Key è "Catalyst.DAL.ExamDAO.CExamDAO"
Edit:
Il mio codice attuale è
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;
}
Sto cercando di caricare le classi di default se non v'è nessuna personalizzazione Il metodo è in BO. Se passo la chiave come nomi qualificati dello spazio dei nomi di qualsiasi tipo di Bo che converte. Ma non digitare DAO
Perché stai facendo in questo modo, invece di 'nuova CExamDAO()'? se è vero che "Riferimento DataAccessLayer viene aggiunto a BusinessLayer", non dovrebbe esserci motivo per cui non si possa usare l'operatore 'new'. O se si vuole solo un riferimento di tipo allora 'typeof (CExamDAO)' –
Forniscici il valore di testo di "chiave". – xanatos
@Adam Ralph. In realtà ho bisogno di passare da assembly personalizzati e assembly di default. Non ho messo il codice qui. –