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();
    }

输出为