Mój kod jestType.GetType (typeName ciąg znaków) zwraca null
type = Type.GetType(key);
Key które mijam jest kwalifikowana nazwa przestrzeni nazw.
Mój kod znajduje się w BusinessLayer. Tworzę instancję DataAccessLayer. Informacje referencyjne DataAccessLayer są dodawane do BusinessLayer.
Otrzymuję błąd jako "Nie można załadować typu" Catalyst.DAL.ExamDAO.CExamDAO "z zespołu" BusinessLayer, wersja = 1.9.3.0, Culture = neutral, PublicKeyToken = null ".".
Co należy zrobić, aby wyraźnie określić, że klasa pochodzi z DataAccessLayer?
Key vale jest "Catalyst.DAL.ExamDAO.CExamDAO"
Edit:
Moje rzeczywisty kod jest
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;
}
Próbuję załadować klas domyślnych, jeśli istnieje bez dostosowywania. Metoda znajduje się w BO. Jeśli przekazać klucz jako kwalifikowane nazwy przestrzeni nazw dowolnego typu Bo, to konwertuje. Ale typ DAO to nie będzie
Dlaczego robisz to w ten sposób zamiast 'nowej CExamDAO()'? jeśli prawdą jest, że "odniesienie do DataAccessLayer zostało dodane do BusinessLayer", nie powinno być powodu, dla którego nie możesz użyć operatora 'new'. Lub jeśli naprawdę chcesz tylko odwołanie do typu, to 'typeof (CExamDAO)' –
Podaj nam wartość tekstową "klucza". – xanatos
@Adam Ralph. W rzeczywistości muszę przełączać się pomiędzy niestandardowymi złożeniami i domyślnym zestawem. Nie wstawiłem tego kodu tutaj. –