gpt4 book ai didi

c# - 公开基础库中定义的枚举类型

转载 作者:太空狗 更新时间:2023-10-29 20:21:03 24 4
gpt4 key购买 nike

我正在尝试修改我的日志记录库。这就是我被困的地方。我使用一个枚举,我们称它为 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com