Я работаю над приложением C #, которое поддерживает два интерфейса связи, каждый из которых поддерживает свою собственную DLL. Каждая DLL-библиотека содержит одинаковые имена функций, но их реализация немного различается в зависимости от поддерживаемого интерфейса. Таким образом, пользователи обычно имеют на своем компьютере только одну DLL-библиотеку, но не обе. DLL для старого интерфейса импортируется следующим образом:
[DllImport("myOldDll.dll",
CharSet = CharSet.Auto,
CallingConvention = CallingConvention.StdCall)]
public static extern int MyFunc1( void );
public static extern int MyFunc2( void );
public static extern int MyFunc3( void );
Будет ли это правильным способом ввода любой библиотеки DLL?
[DllImport("myOldDll.dll",
CharSet = CharSet.Auto,
CallingConvention = CallingConvention.StdCall)]
[DllImport("myNewDll.dll",
CharSet = CharSet.Auto,
CallingConvention = CallingConvention.StdCall)]
public static extern int MyFunc1( void );
public static extern int MyFunc2( void );
public static extern int MyFunc3( void );
В идеале, я думаю, было бы неплохо обнаружить отсутствующую DLL и загрузить вторую DLL, если попытка загрузить первую не удалась. Есть ли изящный способ сделать это?