Ignorowanie brakującej DLL

0

Cześć, piszę prostą bibliotekę i mam taki problem.
Biblioteka będzie używała jednej z dwóch zewnętrznych dllek.
Albo: a.dll
albo b.dll

Zależy to od wywołania, np(pseudokod):

public static object DoWork<T>()
{
    if(T is UseA)
      return new AClass();
    else
      return new BClass();
}


//a wywołanie:

Executor.DoWork<UseA>();
lub:
Executor.DoWork<UseB>();

I teraz tak. W momencie, kiedy wywołuję z UseA, program automatycznie się wywala z komunikatem o braku dll - b.dll, której i tak nie będzie używał (elementów z b.dll używa klasa BClass).
Pytanie jest takie - czy jest jakiś sposób na ominięcie tego? Zakładam, że użytkownik biblioteki będzie miał na kompie tylko a.dll lub tylko b.dll. Raczej nie będzie miał dwóch jednocześnie.
Czy jest coś lepszego tutaj od obsługi wyjątków?

2

Te a.dll i b.dll to biblioteki natywne czy dotnetowe? Jak natywne, to linkuj dynamicznie i ładuj przez LoadLibraryEx.. Jak dotnetowe, to opakuj użycie w AWrapper i BWrapper, tak żeby AWrapper miało tylko referencje do a.dll, a BWrapper do b.dll i ładuj dynamicznie przez app domeny (ewentualnie sprawdź, czy Fusion czasem nie ładuje bibliotek na żądanie, ale wydaje mi się, że robi to od razu).

1 użytkowników online, w tym zalogowanych: 0, gości: 1