获取有关装配的信息

时间:2011-10-06 22:22:21

标签: c# asp.net reflection

我想在C#应用程序中获取有关程序集的信息。我使用以下内容:

Assembly.GetCallingAssembly();

这可以完美地返回调用程序集的信息。

我想与其他应用程序共享此功能,因此我将其包含在我的类库中的类中。

我在多个应用程序中引用了这个类库。当我从我的应用程序调用此方法时,它返回有关类库而不是应用程序的信息。有没有办法可以改变我的上面的代码来返回有关Web应用程序程序集的信息,同时仍然将代码包含在类库中?

2 个答案:

答案 0 :(得分:3)

为什么不让调用者将Assembly作为参数传递给方法,而不是让类库变得聪明?因此,当您从某个应用程序中调用该方法时,您将传递Assembly.GetExecutingAssembly(),并且类库中的方法现在将能够获取实际调用者的程序集。

答案 1 :(得分:0)

我不确定你在反思之上提供了什么,但也许你正在抽象一个不需要抽象的设施。思考已经解决了这个问题,为什么不让它发挥作用呢?

但是如果这个API为你提供了一些有用的信息(例如很好地插入你的数据库等),那么你的方法可能会有所帮助。但我仍然建议你重构它:

  • 将此代码仅放在一个共享项目/程序集中,并在需要调用该功能时链接该项目/程序集。需要duplicate code完成工作才会被视为code smell
  • Assembly对象作为参数,而不是尝试确定当前程序集。如果您想出一些想要在一堆其他程序集上获取数据的代码,这将允许更大的灵活性,并且仍然允许您传递当前程序集。 (注:Darin已经说明了这一点)
相关问题