我的设置:
项目A
Class Log
{
public static void WriteLog(string msg)
{
Trace.write(GetTimestamp(), GetAppDominNameCallingWriteLog(), msg);
}
}
项目B. 包含静态链接Log.cs(添加为链接)
项目C. 包含静态链接Log.cs(添加为链接)
项目D. 包含静态链接Log.cs(添加为链接)
为所有项目使用一个日志文件。现在我需要在GetAppDominNameCallingWriteLog()
类中获取项目名称(Log
)。如何在不将项目名称传递给WriteLog()
的情况下实现此目的。
e.g。项目C呼叫Log.Writelog("logging msg")
结果应该是201511121232 Project C logging msg
项目D致电Log.Writelog("logging msg")
结果应该是201511121232 Project D logging msg
尝试Thread.AppDomain()
,它总是返回项目A.
抱歉,我忘了添加这个案例:项目C在项目A中引用。
答案 0 :(得分:0)
您可以使用以下代码找出正在执行的项目
AppDomain.CurrentDomain.FriendlyName;
我也用Thread类检查了这个。它正确返回结果
System.Threading.Thread.GetDomain().FriendlyName;
<强>更新强>
根据评论中提供的其他信息,您可以使用Reflection
标识调用程序集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();
}
输出