【问题标题】:Make an Internal Static Method visible by another assembly使另一个程序集可以看到内部静态方法
【发布时间】:2013-06-25 12:34:31
【问题描述】:

我找不到任何解决我的问题的方法:

 public static class1
{
    private static void Method()
    {
       //Implementation

我想在另一个程序集中访问该方法,我试图把

using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("MyAssembly2")] 

public static class1
    {
        internal static void Method()
        {
           //Implementation

但我在 MyAssembly2 中看不到我的方法。

我不想让我的方法公开或动态。 关于如何做到这一点的任何想法??

谢谢

西奥

【问题讨论】:

  • 您想从第二个程序集访问静态方法。?
  • 也许这是一个设计问题?你不能把所有的类都放在一个程序集中吗?
  • 您的任何程序集都签名了吗?
  • 你可以调用Static ..你必须使用REFLECTION来加载DLL并访问类和静态方法
  • 但它引出了一个问题,如果你把这个方法当作是公开的,为什么不把它公开?

标签: c# methods static .net-assembly internal


【解决方案1】:

来自 MSDN 关于 Friend Assemblie 的文档:

在编译将访问另一个程序集(程序集 A)的内部类型或内部成员的程序集(程序集 B)时,您必须使用 /out 编译器选项显式指定输出文件的名称(.exe 或 .dll) (有关更多信息,请参阅 /out)。这是必需的,因为编译器在绑定到外部引用时尚未生成它正在构建的程序集的名称。

来源:https://msdn.microsoft.com/library/0tke9fxk(en-us,vs.80).aspx

检查您的编译器选项并重建两个程序集。

【讨论】:

    猜你喜欢
    • 2021-10-20
    • 1970-01-01
    • 2016-06-28
    • 2011-09-10
    • 2010-11-28
    • 2016-06-26
    • 2012-12-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多