Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何通过DLL中的接口调用内部类方法_C#_Interface_Xamarin.ios_Abstract Class - Fatal编程技术网

C# 如何通过DLL中的接口调用内部类方法

C# 如何通过DLL中的接口调用内部类方法,c#,interface,xamarin.ios,abstract-class,C#,Interface,Xamarin.ios,Abstract Class,在我的Xamarin.iOS绑定项目中,我在ApiDefinition.cs中定义了以下接口 [BaseType(typeof(LSMAHandler))] [Protocol, Model] interface LSMAHandlerRegister 它在my project/obj/Debug/ios/project中生成了LSMAHandlerRegister.g.cs。此文件包含以下内容 公共接口ILSMAHandlerRegister:INativeObject, IDisposab

在我的Xamarin.iOS绑定项目中,我在ApiDefinition.cs中定义了以下接口

[BaseType(typeof(LSMAHandler))]
[Protocol, Model]
interface LSMAHandlerRegister
它在my project/obj/Debug/ios/project中生成了LSMAHandlerRegister.g.cs。此文件包含以下内容

  • 公共接口ILSMAHandlerRegister:INativeObject, IDisposable,SightCallBinding.ILSMAHandler
  • 内部密封类LSMAHandlerRegisterWrapper:BaseWrapper, ILSMAhandler寄存器
  • 公共不安全抽象分部类LSMAHandlerRegister: Ilsmahandler,Ilsmahandler寄存器

  • 我已将生成的DLL添加到我的xamarin.ios项目中。现在我想在上面的类中调用RegisterWithURL方法。但该方法的实现仅在内部包装类中可用。如何在Xamarin.iOS项目中调用此方法?

    简单的anwser-您不能。内部类在dll中不可见。 不过,有些事情你可以做

    首先想想为什么这个类是内部的。这可能有一个重要原因。您可以做的事情(您必须访问此项目)

    • 使类和接口公开(可能没有理由将其内部化)
    • 使用
      InternalsVisibleTo
      -但是请注意,这被视为一种不好的做法,不应这样做。一个例外是测试项目。您可以显示内部构件来测试项目。那也许有时候还可以
    创建使用此内部类的其他公共类,例如:

    public class MyPublicHelper
    {
        public void CallMyInternalMethod()
        {
            MyInternalClass obj = new MyInternalClass();
            obj.MyInternalMethod();
        }
    }