作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在尝试修改我的日志记录库。这就是我被困的地方。我使用一个枚举,我们称它为 ActionType,来识别我的操作,例如 UserLogin、PurchaseOrder... 数百个。我在我的记录器方法中使用这种类型。但是由于我为了松散耦合而将我的记录器库与我的项目特定代码分开,并且基础库无法访问项目中定义的 ActionType,我该如何实现这一点。为了澄清它,让我在 java 中解释相同的情况。 Java 允许枚举实现接口(interface)。所以我可以写:
在我可以定义的基本记录器库中;
公共(public)接口(interface) IActionType {}
在我的几个项目之一中
公共(public)枚举 ActionType 实现 IActionType {UserLogin, PurchaseOrder, .....}
因此,当我调用我的 logger.log(ActionType.UserLogin, ....)
基础库时,将获得底层操作。这一切就足够了。无论如何,它周围有没有在 C# 中完成这个?顺便说一句,我考虑过使用 IoC 容器,但我想要更优雅的东西。
非常感谢您的帮助...
最佳答案
这是 log4net 用于 Level
类的方法(是的,它是类,而不是枚举):
public class ActionType : IActionType
{
public static readonly ActionType UserLogin;
public static readonly ActionType PurchaseOrder;
static ActionType()
{
UserLogin = new ActionType(1, "User Login");
// ...
}
public ActionType(int value, string name)
{
// verify arguments values
Value = value;
Name = name;
}
public int Value { get; private set; }
public string Name { get; private set; }
}
和界面
public interface IActionType
{
int Value { get; }
string Name { get; }
}
用法:
logger.Log(ActionType.UserLogin);
关于c# - 公开基础库中定义的枚举类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14286898/
我是一名优秀的程序员,十分优秀!