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