Parametryzowanie DllImport do użytku w aplikacji C #

Mamy dostawcę, który zapewnia bibliotekę do dostępu do ich sprzętu. Niestety, jeśli masz wiele urządzeń, musisz zaimportować ich bibliotekę wiele razy, używając różnych nazw dll. W konsekwencji mamy metryczną ilość zduplikowanego kodu i obawiam się, że wkrótce stanie się koszmarem konserwacyjnym.

Obecnie mamy coś w rodzaju:

namespace MyNamespace {
    public static class Device01 {
        public const string DLL_NAME = @"Device01.dll";

        [DllImport(DLL_NAME, EntryPoint = "_function1")]
        public static extern int Function1(byte[] param);

...

        [DllImport(DLL_NAME, EntryPoint = "_function99")]
        public static extern int Function99(int param);
    }

....

    public static class Device16 {
        public const string DLL_NAME = @"Device16.dll";

        [DllImport(DLL_NAME, EntryPoint = "_function1")]
        public static extern int Function1(byte[] param);

...

        [DllImport(DLL_NAME, EntryPoint = "_function99")]
        public static extern int Function99(int param);
    }
}

Gdybym używał C lub C ++, po prostu zdefiniowałbym funkcje jednego pliku i #include ich wiele razy w klasach statycznych, nie ładnie, ale lepiej niż alternatywa, ale w C # nie mam tej opcji.

Gdyby ktoś miał sprytne pomysły na to, jak skutecznie zdefiniować fabrykę, która pozwoliłaby nam wygenerować tyle klas urządzeń statycznych, ile potrzebujemy, byłbym bardzo zainteresowany.

Dzięki,

Edycja: Prototypy funkcji są dość zróżnicowane, więc żadna metoda, która polega na tym, że są takie same, nie byłaby odpowiednia. Dzięki za sugestie do tej pory, nie tak szybko przedstawiałem tak wiele pomysłów.

questionAnswers(3)

yourAnswerToTheQuestion