Как избежать использования переключателей (с функциями dll) c# - PullRequest
0 голосов
/ 05 февраля 2020

Я использую DLL для связи с загрузчиком через микрочип и использую многие функции библиотеки DLL.

Swicht(DLL Function)
case: Readbyte
    MC2211.readbyte(intptr DeviceHabdle, unit number Of Bytes, ref Data)
case : Writebyte
    MC2211.readbyte(intptr DeviceHabdle, unit number Of Bytes, ref Data)

Но такая структура противоречит принципу открытого закрытия.

1 Ответ

0 голосов
/ 05 февраля 2020

Использование Шаблон стратегии

interface IMC2211Command
{
    void Run( object[] args );
}

class ReadByteCmd : IMC2211Command
{
    public void Run( object[] args )
    {
        // read bytes
    }
}

class WriteByteCmd : IMC2211Command
{
    public void Run( object[] args )
    {
        // write bytes
    }
}

Как использовать:

IMC2211Command cmd = new WriteByteCmd();
cmd.Run( args );

Это заставит всю вашу команду добавлять коды, а не изменять существующие варианты переключения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...