如何动态获取程序集名称

3

I got a class inside a library like this:

namespace Foo
{
 public abstract class EventBase
    {
        public string EventSource => Assembly.GetExecutingAssembly().GetName().Name;
        public long Timestamp => DateTimeOffset.UtcNow.ToUnixTimeSeconds();
        public Guid EventId => Guid.NewGuid();
    }
}
 public class ActionRecordable : EventBase
    {
        public string ActionName { get; set; }
        public Guid UserId { get; set; }
    }

但当我在 Bar 解决方案中使用库时,我得到的属性EventSource是 Foo (库的命名空间而不是使用它的项目名称)。

是否有一种方法可以动态获取正在使用的程序集的名称?


你在这里期望什么名称? - Pavel Anikhouski
我的建议是创建静态构造函数 Foo(string assemblyName),并在应用程序的启动时将 assemblyName 参数传递进去。 - DespeiL
或者为IServiceCollection创建扩展方法。 - DespeiL
2个回答

2

以下是在运行时获取程序集名称的代码:

string name =  System.Reflection.Assembly.GetExecutingAssembly().FullName;
string[] values = name.Split(new char[] { ',' });<br>
Console.WriteLine("FullName Assembly:{0}", values[0]);

2
您可以使用反射来获取程序集名称,例如:
 string name = System.Reflection.Assembly.GetEntryAssembly().GetName().Name;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接