Я работаю над небольшим проектом, я пытаюсь создать слой, который будет обрабатывать исключения и протоколирование.Как создать класс обработки исключений и ведения журнала в C#
Этот слой будет располагаться между пользовательским интерфейсом и DAL, в основном как BAL, который будет иметь общий метод, который затем инициирует дальнейший вызов уровня доступа к данным.
Некоторые вещи, как этот
Public Class ExceptionHandler
{
//which should take a method name,parameters and return a object.
Public T InitiateDatabaseCall(//method name as input,parameters)
{
try
{
//then make the call to the method using the input parameter and pass the parameters
}
catch(Exception e)
{
// do logging
}
}
Этот слой будет выступать в качестве центра хранилища для обработки и регистрации исключение. Я не могу создать метод, который я описал, эксперты могут предоставить некоторый фрагмент, который покажет случай этого сценария.
Отредактировано: С код добавлен
static void Main(string[] args)
{
BAL b = new BAL();
var ll = b.GetFieldList("xxxxyyyy");
}
public class BAL
{
public List<Fields> GetFieldList(string screen)
{
if(!string.IsNullOrEmpty(screen))
{
ExceptionHandler.InitiateCall(() =>GetList(screen)));
}
}
}
public static class ExceptionHandler
{
public T InitiateCall<T>(Func<T>method,object[] parms) where T : object
{
try
{
return method.Invoke();
}
catch(Exception ex)
{
return default(T);
}
}
}
public class DAL
{
public List<Fields> GetList(string name)
{
VipreDBDevEntities context = new VipreDBDevEntities();
return context.Database.SqlQuery<Fields>("SCREEN_FIELDS_SELECT @SCREEN_NAME", name).ToList();
}
}
Это дает ошибку GetList() не существует в текущем контексте.
Почему downvote? –
, что довольно близко к тому, что я думал, я отредактировал свой вопрос с последним, есть ошибка, однако, о методе .... посмотрите – ankur
GetList() определен в другом классе, поэтому 'ExceptionHandler.InitiateCall (() => GetList (экран))); 'необходимо изменить на' return ExceptionHandler.InitiateCall (() => новый DAL(). GetList (screen)); ' –