Static link 类 - 需要知道调用项目名称
Static link classes - need to know calling project name
我的设置:
项目 A
Class Log
{
public static void WriteLog(string msg)
{
Trace.write(GetTimestamp(), GetAppDominNameCallingWriteLog(), msg);
}
}
项目 B
包含静态 link Log.cs(添加为 link)
项目 C
包含静态 link Log.cs(添加为 link)
项目 D
包含静态 link Log.cs(添加为 link)
所有项目使用一个日志文件。现在我需要在 Log
class 中获取项目名称 (GetAppDominNameCallingWriteLog()
)。我如何在不将项目名称传递给 WriteLog()
.
的情况下实现这一目标
例如项目 C 调用 Log.Writelog("logging msg")
结果应该是 201511121232 Project C logging msg
项目 D 调用 Log.Writelog("logging msg")
结果应该是 201511121232 Project D logging msg
尝试过 Thread.AppDomain()
,它总是 return 项目 A.
抱歉,我忘了添加这个案例:项目 C 被项目 A 引用。
您可以使用以下代码找到正在执行的项目
AppDomain.CurrentDomain.FriendlyName;
我也在线程 class 中检查过这个。它returns结果正确
System.Threading.Thread.GetDomain().FriendlyName;
更新
根据评论中提供的附加信息,您可以使用反射识别调用程序集
System.Reflection.Assembly.GetCallingAssembly().FullName;
工作示例
static void Main(string[] args)
{
//Direct call to the Log class from ConsoleApplication3
Log.Write();
//Indirect call to the Log class through a Class Library called ClassLibrary1
Class1.LogIt();
Console.ReadLine();
}
输出为
我的设置:
项目 A
Class Log
{
public static void WriteLog(string msg)
{
Trace.write(GetTimestamp(), GetAppDominNameCallingWriteLog(), msg);
}
}
项目 B 包含静态 link Log.cs(添加为 link)
项目 C 包含静态 link Log.cs(添加为 link)
项目 D 包含静态 link Log.cs(添加为 link)
所有项目使用一个日志文件。现在我需要在 Log
class 中获取项目名称 (GetAppDominNameCallingWriteLog()
)。我如何在不将项目名称传递给 WriteLog()
.
例如项目 C 调用 Log.Writelog("logging msg")
结果应该是 201511121232 Project C logging msg
项目 D 调用 Log.Writelog("logging msg")
结果应该是 201511121232 Project D logging msg
尝试过 Thread.AppDomain()
,它总是 return 项目 A.
抱歉,我忘了添加这个案例:项目 C 被项目 A 引用。
您可以使用以下代码找到正在执行的项目
AppDomain.CurrentDomain.FriendlyName;
我也在线程 class 中检查过这个。它returns结果正确
System.Threading.Thread.GetDomain().FriendlyName;
更新
根据评论中提供的附加信息,您可以使用反射识别调用程序集
System.Reflection.Assembly.GetCallingAssembly().FullName;
工作示例
static void Main(string[] args)
{
//Direct call to the Log class from ConsoleApplication3
Log.Write();
//Indirect call to the Log class through a Class Library called ClassLibrary1
Class1.LogIt();
Console.ReadLine();
}
输出为