Re: А можно ли запретить "обычный" вызов метода?
От: kov_serg Россия  
Дата: 01.08.17 20:26
Оценка: 6 (2) +1
Здравствуйте, Artem Korneev, Вы писали:

AK>Есть у меня хранимые процедуры в SQL-базе и мэппинг на EntityFramework для вызова тех хранимых процедур.

AK>Т.к. это SQL, там бывают довольно длинные списки параметров. Вот, например:
...
AK>Все или почти все параметры — одного типа (string). Если вызывать процедуру без указания имён параметров, то там запросто можно дико накосячить.
AK>Можно ли как-то средствами C# запретить вызов метода без указания имён параметров? Т.е. чтоб вот такая инструкция сразу давала ошибку компилляции:
AK>?
Делайте по старинке
public class SearchStudiesParams {
    public string patientID;
    public string facilityMRN;
    public string firstName;
    public string lastName;
    public string patientName;
    public string firstAndLastName;
    public string middleName;
    public string patientPrefix;
    public string patientSuffix;
    public string gender;
    public string modality;
    public string aetitle;
    public string studyId;
    public string description;
    public string accession;
    public string refPhysician;
    public string studyDateFrom;
    public string studyDateTo;
    public string perPhysician;
    public virtual bool valid() {
        return
            patientID != null &&
            facilityMRN != null &&
            firstName != null &&
            lastName != null &&
            patientName != null &&
            firstAndLastName != null &&
            middleName != null &&
            patientPrefix != null &&
            patientSuffix != null &&
            gender != null &&
            modality != null &&
            aetitle != null &&
            studyId != null &&
            description != null &&
            accession != null &&
            refPhysician != null &&
            studyDateFrom != null &&
            studyDateTo != null &&
            perPhysician != null;
    }
}
...
  var studies = ctx.usp_SearchStudies(new SearchStudiesParams() {
      patientID = patientId,
      facilityMRN = facilityMrn,
      firstName = firstName,
      lastName = lastName,
      patientName = patientName,
      firstAndLastName = firstAndLastName,
      middleName = middleName,
      patientPrefix = patientPrefix,
      patientSuffix = patientSuffix,
      gender = gender,
      modality = modality,
      aetitle = aetitle,
      studyId = studyId,
      description = description,
      accession = accession,
      refPhysician = refPhysician,
      studyDateFrom = studyDateFrom,
      studyDateTo = studyDateTo,
      perPhysician = perPhysician            
  });
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.