Передача параметров против открытых переменных при вызове метода в dll (vb.net) - PullRequest
0 голосов
/ 14 декабря 2018

Я перемещаю некоторый код из моего основного проекта в dll, чтобы сделать мое приложение более динамичным (dll можно заменить на другой, вроде плагина).Несколько подпрограмм в моем главном проекте были объединены в одну в dll, и разные куски кода выполняются в зависимости от переменной, переданной из основного проекта.Это, в свою очередь, выбирается из базы данных, которая обновляется библиотекой DLL при загрузке, что позволяет добавлять совершенно новые функциональные возможности без необходимости устанавливать новую версию приложения.

Теперь, за исключением аргументов, являющихсяпереданный из вызывающего кода в подпрограмму в dll, код в этом подпрограмме также использует значения некоторых публично объявленных переменных, которые отслеживают такие вещи, как исходный путь входных данных, внесенные пользователем изменения в некоторые объекты и т. д. До этогоПеремещая код, они были объявлены в модуле моего основного проекта.Значения теперь, однако, нужны сабвуферу в моей dll.

Я мог бы передать все эти значения переменных в качестве аргументов сабвуферу в dll, даже если большинство из них не используются каждый раз, когда выполняется вызов (поскольку я использую только один сабвуфер для всего, что делает dll).Это кажется самым простым решением.Однако я знаю, что использование методов с параметрами более 10 считается плохой практикой.Или я мог бы переместить открытые переменные в интерфейсную dll (которая уже существует), значения которой и мой основной проект, и моя dll могут получить и обновить там значения.

Что лучше (или наименее плохо) всроки исполнения?Может ли один из вариантов иметь неожиданные последствия?

1 Ответ

0 голосов
/ 14 декабря 2018

У меня создается впечатление, что ваши методы могут быть общими.Вместо этого вы должны передать эти параметры конфигурации в конструктор объекта и сохранить их в качестве переменной класса.Затем ваш метод может легко получить значения из класса.

Class SomeClass

    Public Sub New(ByVal someParameter As String)
        Me.SomeParameter = someParameter
    End Sub

    Public ReadOnly Property SomeParameter As String

    Public Sub SomeMethod()
        ' Can use Me.SomeParameter here
    End Sub

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