【发布时间】:2016-10-13 09:11:15
【问题描述】:
我正在做一个小项目,我正在尝试创建一个处理异常和日志记录的层。
该层将位于用户界面和 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
}
}
该层将作为中心存储库来处理和记录异常。我无法创建我描述的方法,专家能否提供一些 sn-p 来展示这种情况。
已编辑:添加代码
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() 在当前上下文中不存在。
【问题讨论】:
标签: c# .net exception-handling delegates n-tier-architecture