Сообщение Re: А можно ли запретить "обычный" вызов метода? от 01.08.2017 18:25
Изменено 01.08.2017 18:32 bnk
Re: А можно ли запретить "обычный" вызов метода?
Здравствуйте, Artem Korneev, Вы писали:
AK>Есть у меня хранимые процедуры в SQL-базе и мэппинг на EntityFramework для вызова тех хранимых процедур.
AK>Т.к. это SQL, там бывают довольно длинные списки параметров.
AK>Все или почти все параметры — одного типа (string). Если вызывать процедуру без указания имён параметров, то там запросто можно дико накосячить.
AK>Можно ли как-то средствами C# запретить вызов метода без указания имён параметров? Т.е. чтоб вот такая инструкция сразу давала ошибку компилляции:
AK>
AK>?
если вызов не авто-генерированый, то есть стандартное решение — передавать объект params, у которого все эти параметры — проперти.
тогда не будет проверяться что ты их все поставил, но это решается гораздо проще, через валидацию, которая скорее всего и так уже есть на уровне базы.
Если авто-генерированвй, менять генератор.
AK>Есть у меня хранимые процедуры в SQL-базе и мэппинг на EntityFramework для вызова тех хранимых процедур.
AK>Т.к. это SQL, там бывают довольно длинные списки параметров.
AK>Все или почти все параметры — одного типа (string). Если вызывать процедуру без указания имён параметров, то там запросто можно дико накосячить.
AK>Можно ли как-то средствами C# запретить вызов метода без указания имён параметров? Т.е. чтоб вот такая инструкция сразу давала ошибку компилляции:
AK>
AK>var studies = ctx.usp_SearchStudies(
AK> patientId,
AK> facilityMrn,
AK> firstName,
AK> lastName,
AK> patientName,
AK> firstAndLastName,
AK> middleName,
AK> patientPrefix,
AK> patientSuffix,
AK> gender,
AK> modality,
AK> aetitle,
AK> studyId,
AK> description,
AK> accession,
AK> refPhysician,
AK> studyDateFrom,
AK> studyDateTo,
AK> perPhysician);
AK>AK>?
если вызов не авто-генерированый, то есть стандартное решение — передавать объект params, у которого все эти параметры — проперти.
тогда не будет проверяться что ты их все поставил, но это решается гораздо проще, через валидацию, которая скорее всего и так уже есть на уровне базы.
Если авто-генерированвй, менять генератор.
Re: А можно ли запретить "обычный" вызов метода?
Здравствуйте, Artem Korneev, Вы писали:
AK>Есть у меня хранимые процедуры в SQL-базе и мэппинг на EntityFramework для вызова тех хранимых процедур.
AK>Т.к. это SQL, там бывают довольно длинные списки параметров.
AK>Все или почти все параметры — одного типа (string). Если вызывать процедуру без указания имён параметров, то там запросто можно дико накосячить.
AK>Можно ли как-то средствами C# запретить вызов метода без указания имён параметров? Т.е. чтоб вот такая инструкция сразу давала ошибку компилляции:
AK>
AK>?
если вызов не авто-генерированый, то есть стандартное решение — передавать объект params, у которого все эти параметры — проперти.
тогда не будет проверяться что ты их все поставил, но это решается гораздо проще, через валидацию, которая скорее всего и так уже есть на уровне базы.
Если авто-генерированвй, менять генератор
Если они приходят с фроненда, можно начать использовать автомаппер (automapper) например.
AK>Есть у меня хранимые процедуры в SQL-базе и мэппинг на EntityFramework для вызова тех хранимых процедур.
AK>Т.к. это SQL, там бывают довольно длинные списки параметров.
AK>Все или почти все параметры — одного типа (string). Если вызывать процедуру без указания имён параметров, то там запросто можно дико накосячить.
AK>Можно ли как-то средствами C# запретить вызов метода без указания имён параметров? Т.е. чтоб вот такая инструкция сразу давала ошибку компилляции:
AK>
AK>var studies = ctx.usp_SearchStudies(
AK> patientId,
AK> facilityMrn,
AK> firstName,
AK> lastName,
AK> patientName,
AK> firstAndLastName,
AK> middleName,
AK> patientPrefix,
AK> patientSuffix,
AK> gender,
AK> modality,
AK> aetitle,
AK> studyId,
AK> description,
AK> accession,
AK> refPhysician,
AK> studyDateFrom,
AK> studyDateTo,
AK> perPhysician);
AK>AK>?
если вызов не авто-генерированый, то есть стандартное решение — передавать объект params, у которого все эти параметры — проперти.
тогда не будет проверяться что ты их все поставил, но это решается гораздо проще, через валидацию, которая скорее всего и так уже есть на уровне базы.
Если авто-генерированвй, менять генератор
Если они приходят с фроненда, можно начать использовать автомаппер (automapper) например.