In Debug mode code builds just fine and work.
See class which causes exception below:
Error 202 ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
Parameter name: target
at Mono.Cecil.Cil.ILProcessor.InsertBefore(Instruction target, Instruction instruction)
at AspectInjector.BuildTask.Contexts.TargetMethodContext.SetupSingleReturnPoint(Instruction suggestedSingleReturnPoint)
at AspectInjector.BuildTask.Contexts.TargetMethodContext.SetupReturnPoints()
at AspectInjector.BuildTask.Contexts.TargetMethodContext..ctor(MethodDefinition targetMethod)
at AspectInjector.BuildTask.Contexts.MethodContextFactory.GetOrCreateContext(MethodDefinition md)
at AspectInjector.BuildTask.Processors.ModuleProcessors.InjectionProcessor.ProcessAspectAttributes(MethodDefinition targetMethod, String targetName, IEnumerable`1 aspectAttributes)
at AspectInjector.BuildTask.Processors.ModuleProcessors.InjectionProcessor.ProcessModule(ModuleDefinition module)
at AspectInjector.BuildTask.Processors.AssemblyProcessor.Process(AssemblyDefinition assembly)
at AspectInjector.BuildTask.AspectInjectorBuildTask.Execute()
OR.Data.Core
[ImportingConstructor]
public PatientsService(IPassportRepository passportRepository,
IDiagnosisRepository diagRepository,
IDispensaryMarkRepository dispensaryMarkRepository,
IClinicalGroupsRepository clinicalGroupsRepository,
ISendCallRepository sendCallRepository)
{
_diagnosisRepository = diagRepository;
_dispensaryMarkRepository = dispensaryMarkRepository;
_passportRepository = passportRepository;
_clinicalGroupsRepository = clinicalGroupsRepository;
_sendCallRepository = sendCallRepository;
}
public IDiagnosis CreateNewDiagnosis()
{
return _diagnosisRepository.Create();
}
public IPatient GetById(string id)
{
var passport = _passportRepository.GetById(id);
if (passport == null)
{
return null;
}
var diagnoses = _diagnosisRepository.GetAllForPatient(id);
var clinicalGroups = _clinicalGroupsRepository.GetAllForPatient(id);
var patient = new Patient(passport, diagnoses, clinicalGroups);
return patient;
}
public void DeletePatient(IPatient patient)
{
var passport = _passportRepository.GetById(patient.Id);
if (passport != null)
{
//diagnoses delete by dbTrigger
_passportRepository.DeleteByKey(passport.Id);
}
}
public string GeneratePatientId()
{
return _passportRepository.GeneratePatientId();
}
public IPassport GetPassport(IPatient patient)
{
return _passportRepository.GetById(patient.Id);
}
public void AddPatient(IPatient patient)
{
if (patient.Passport == null)
{
throw new ArgumentException("Can't to add patient without passport");
}
_passportRepository.Create(patient.Passport);
}
public void UpdatePatient(IPatient patient)
{
if (patient.Passport == null)
{
throw new ArgumentException("Can't to update patient without passport");
}
var pasp = _passportRepository.GetById(patient.Id);
if (pasp != null)
{
//ToDo: update fields for item from DB???
_passportRepository.Update(patient.Passport);
}
}
public IEnumerable<IDiagnosis> GetAllDiagnoses(IPatient patient)
{
return _diagnosisRepository.GetAllForPatient(patient.Id);
}
public IDiagnosis GetDiagnosis(IPatient patient, int number)
{
return _diagnosisRepository.Get(patient.Id, number);
}
public void AddDiagnosis(IPatient patient, IDiagnosis diag)
{
var currentDiagnoses = _diagnosisRepository.GetAllForPatient(patient.Id);
diag.Number = currentDiagnoses.Any() ? currentDiagnoses.Max(x => x.Number) + 1 : 1;
_diagnosisRepository.Create(patient.Id, diag);
}
public void UpdateDiagnosis(IPatient patient, IDiagnosis diag)
{
var d = _diagnosisRepository.Get(patient.Id, diag.Number);
if (d != null)
{
_diagnosisRepository.Update(patient.Id, diag);
}
}
public void DeleteDiagnosis(IPatient patient, IDiagnosis diag)
{
var d = _diagnosisRepository.Get(patient.Id, diag.Number);
if (d != null)
{
_diagnosisRepository.Delete(d);
}
}
public void AddClinicGroup(IPatient patient, IClinicalGroup clinicalGroup)
{
_clinicalGroupsRepository.Create(patient.Id, clinicalGroup);
}
public void UpdateClinicalGroup(IPatient patient, IClinicalGroup clinicalGroup)
{
_clinicalGroupsRepository.Update(patient.Id, clinicalGroup);
}
public void DeleteClinicalGroup(IPatient patient, IClinicalGroup clinicalGroup)
{
_clinicalGroupsRepository.Delete(clinicalGroup);
}
public IEnumerable<IPatient> FindBy(IPatientSearchPattern pattern)
{
var pasports = _passportRepository.GetByExpression(pattern);
return pasports.Select(x => new Patient(x));
}
public IEnumerable<IDispensaryMark> GetAllDispensaryMarks(IPatient patient)
{
return _dispensaryMarkRepository.GetAllForPatient(patient.Id);
}
public IDispensaryMark GetDispensaryMark(int identity)
{
Expression<Func<IDispensaryMark, bool>> identityExpression = x => x.Identity == identity;
return _dispensaryMarkRepository.GetByIdentity(identity);
}
public void UpdateDispensaryMark(IDispensaryMark mark, int identity)
{
var dbMark = GetDispensaryMark(identity);
if (dbMark != null)
{
_dispensaryMarkRepository.UpdateByIdentity(identity, mark);
}
else
{
throw new ArgumentException("There is no such dispensary mark ");
}
}
public void DeleteDispensaryMark(int identity)
{
var dbMark = GetDispensaryMark(identity);
if (dbMark != null)
{
_dispensaryMarkRepository.DeleteByKey(dbMark);
}
else
{
throw new ArgumentException("There is no such dispensary mark ");
}
}
public void AddDispensaryMark(IPatient patient, IDispensaryMark mark)
{
_dispensaryMarkRepository.Create(patient.Id, mark);
}
public IEnumerable<ISendCall> GetSendedCalls(IPatient patient)
{
return _sendCallRepository.GetAllForPatient(patient.Id);
}
public void DeleteSendCall(ISendCall call)
{
_sendCallRepository.DeleteEntity(call);
}
public ISendCall GetSendCallByIdentity(int identity)
{
return _sendCallRepository.GetByIdentity(identity);
}
}