#vb.net #visual-studio-2010
#vb.net #visual-studio-2010
Вопрос:
Я нашел здесь ответ, который не совсем работает, поэтому я подумал, что спрошу конкретно, что я ищу.
У меня есть имена функций, хранящиеся в базе данных, которые привязаны к определенным объектам.
Я запрашиваю базу данных, возвращаю имя функции для объекта, и теперь я пытаюсь использовать эти данные для вызова функции.
Например, у меня есть объект «БУТЫЛКА» и функция с именем «ОТКРЫТАЯ БУТЫЛКА». Когда я использую ‘BOTTLE’, я хочу вызвать ‘OPEN BOTTLE’.
Я нашел это:
CallByName(ME, "FunctionName", CallType.Method)
Но это не работает, потому что у меня есть функции, хранящиеся в отдельном методе в моем коде. In не позволит мне передать метод вместо МЕНЯ, и я не могу его наследовать, потому что это метод.
Я не могу изменить его с метода на что-то другое, потому что он используется более чем в одном месте по всей системе и потенциально может привести к его поломке.
Есть ли другой вариант, который я могу использовать? Я попытался использовать отражение, но столкнулся с той же проблемой.
Я использую VB.net в Visual Studio 2010.
Комментарии:
1. Почему бы вам не использовать один метод и не передать это имя в качестве параметра? Затем используйте его для
if-else
илиSelect...Case
.2. В нынешнем виде их будет 30, и они будут только расти. Я пытаюсь сделать это как можно более простым в обновлении и обслуживании. Каждый объект имеет 4 функции, которые он использует, и они не являются общими для нескольких объектов.
3. Я не могу сказать, что вы пробовали, а что не сработало — возможно, покажите еще какой-нибудь код, который иллюстрирует то, что вы пытаетесь сделать. Вы читали документацию для
CallByName
? 2-й параметр — это имя функции, напримерCallByName(aBottle, "OpenBottle", CallType.Method)
. Возможно, вместо этого вам лучше использовать API-интерфейсы .NET Reflection.4. Функции, которые я использую, как указано в вопросе выше, находятся в методе. CallByName не позволяет передавать методы в первом параметре, только объекты. Я пытался использовать отражение, но для этого также требуется объект, а не метод.
5. Боюсь, я не понимаю, какие «функции я использую… «находятся в методе» может означать. Хранятся ли они в лямбда-выражениях в переменных? Показ некоторого кода действительно поможет понять ваш вопрос.