静态链接类 - 需要知道调用项目名称

时间:2015-11-12 13:07:18

标签: c# .net static-linking

我的设置:

项目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中引用。

1 个答案:

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

输出

Sample Output