как выполнить предварительную обработку деталей вызова метода до того, как метод будет выполнен в C # - PullRequest
1 голос
/ 25 июля 2010

Привет всем,

Я не уверен, возможно ли это на C # или на любом другом языке. Ниже мое требование

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

Для лучшего объяснения ниже приведен пример

Шаг 1. Пользователь A вызывает метод веб-сервиса GetData (строка dataid, строка dataLocation).
Шаг 2: веб-сервис получает этот вызов как http get метод, и он должен сначала выполнить метод CheckData (GetData) по умолчанию.
Шаг 3: CheckData теперь проверяет данные, которые были отправлены в метод GetData, а затем выполняет метод GetData.

Таким образом, я могу выполнять некоторые операции, такие как аутентификация, очистка, а также другие различные действия системы Будет ли это возможно для такого рода модели.

Мое требование

Пользователь вызывает метод Webservice employee.GetQualification.

В веб-сервисах стек вызовов должен быть

Validater.CheckData (GetQualification)
Employee.GetQualification()
Validator.CheckOutput(output)

Я не ищу что-то вроде ниже (метод стека)

Employee.GetQualification()
Validater.CheckData (getQualification parameters)
execute actual execution
Validator.CheckOutput(output)
Return

Некоторые ссылки / мысли были бы полезны для меня, чтобы начать

Спасибо.

Ответы [ 4 ]

1 голос
/ 25 июля 2010

Звучит так, будто вы ищете ткача типа PostSharp (к сожалению, больше не бесплатно).

Редактировать : Только что вспомнил другую библиотеку аспектно-ориентированного программирования (AOP): LOOM.NET .

0 голосов
/ 25 июля 2010

Вы можете написать для себя приемник, который подключается до и после выполнения вашего метода.Я когда-то писал раковину, проверь: http://technologyandme.blogspot.com/2009/05/putting-c-attributes-to-use.html

0 голосов
/ 25 июля 2010

Похоже, что это типичный сценарий для инфраструктуры AOP, например, посмотрите на пример регистрации в PostSharp учебник

В веб-приложениях или в среде WCF, естьконечно, другие подходы (например, HttModules), но на основе AOP подход будет работать в любой среде.

Примечание: существует бесплатная версия PostSharp для сообщества, а более старая версия 1.5 также бесплатна.И, конечно, есть и другие AOP-фреймворки, такие как Spring.NET .

.
0 голосов
/ 25 июля 2010

На уровне методов нет способа сделать именно то, что вы хотите, но если вы используете WCF, вы можете создать собственное поведение, которое сделает это за вас.

См. этов статье приведены примеры, в частности, немного о IParameterInspector .

Лично я не думаю, что я бы использовал этот подход, если только вам не требуется настраиваемое поведение.Жесткое кодирование вызова одного частного метода для некоторой проверки в начале некоторой операции не так уж и плохо.

...