首页 > 解决方案 > 如何通过DLL中的接口调用内部类方法

问题描述

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

[BaseType(typeof(LSMAHandler))]
[Protocol, Model]
interface LSMAHandlerRegister

它在我的项目/obj/Debug/ios/project 中生成了 LSMAHandlerRegister.g.cs。该文件包含以下内容

  1. 公共接口 ILSMAHandlerRegister : INativeObject, IDisposable,SightCallBinding.ILSMAHandler
  2. 内部密封类 LSMAHandlerRegisterWrapper : BaseWrapper, ILSMAHandlerRegister
  3. 公共不安全抽象部分类 LSMAHandlerRegister : LSMAHandler, ILSMAHandlerRegister

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

标签: c#interfacexamarin.iosabstract-class

解决方案


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

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

创建其他使用此内部公共类的公共类,例如:

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

推荐阅读