c# - 避免具有单个不同属性的多个静态类
问题描述
我的应用程序由多个单独的程序集组成。按照内部约定,每个程序集都定义了一个用于记录的 id。
目前,有一个名为的基本类CoreLog
提供基本功能,如Write
. 其中一个参数是Id
我前面提到的。
通常,每个程序集都会定义一个名为 的类Log
,该类只是调用函数CoreLog
并提供程序集的唯一 ID。
这样我们就可以简单地坚持在Log.Write
整个代码中使用。
这很好用,除了我必须为每个新组件最初都这样做。而且,如果有什么变化,我也必须调整大量文件。
有没有更好的方法来做到这一点?
解决方案
这样的事情有用吗?
public static class SomeLogger
{
public static void Write([CallerMemberName] string caller = string.Empty, string message)
{
//caller will be automatically populated
}
}
如果你愿意 ,你也可以使用[CallerFilePath]
和。[CallerLineNumber]
文档可以在这里找到。
如果您需要比这些属性提供的更多信息,您可以获取调用者的程序集:
public static class SomeLogger
{
public static void Write(string message)
{
var callingAssembly = Assembly.GetCallingAssembly();
//Grab whatever you need from callingAssembly and output it
}
}
推荐阅读
- java - 是否可以通过自定义键盘应用程序跟踪在任何应用程序的文本字段中输入的整个字符串?
- get - GoogleSignIn.getClient(this, gso) 不存在
- css - Flexbox 布局与 Safari 中的 grid-column-gap 不兼容
- python - For 循环使用 Jinja 和 PyMongo 为整个 dict 重复相同的输出
- machine-learning - LSTM 在更高的验证损失下具有更高的验证精度(Python:Keras)
- node.js - Nodemailer - 错误:连接 ETIMEDOUT 216.58.221.36:587
- connection-pooling - 在 Spring 上使用池连接工厂和 Artemis ActiveMQ 故障转移来处理重新发送消息
- node.js - 为 Electron 构建 node-usb
- sqlite - 在 Flutter 中从文件中导入 Sqlite 数据库
- javascript - 无法使用 react-spring 为 html 进度设置动画