[英]How to call Internal class methods through Interface in DLL
在我的Xamarin.iOS绑定项目中,我在ApiDefinition.cs中定义了以下接口
[BaseType(typeof(LSMAHandler))]
[Protocol, Model]
interface LSMAHandlerRegister
它已经在我的project / obj / Debug / ios / project中生成了LSMAHandlerRegister.g.cs。 该文件包含以下内容
我已将生成的DLL添加到我的xamarin.ios项目中。 现在,我想在上述类中调用RegisterWithURL方法。 但是该方法的实现仅在内部包装器类中可用。 如何在Xamarin.iOS项目中调用此方法?
简单的答案-您不能。 内部类在dll中不可见。 您可以做一些事情。
首先想想为什么这个类是内部的。 可能有一个重要原因。 您可以做的事情(您必须有权访问此项目)
InternalsVisibleTo
https://docs.microsoft.com/pl-pl/dotnet/api/system.runtime.compilerservices.internalsvisibletoattribute?view=netframework-4.8-但是请注意,这被认为是不好的做法,不应该这样做。 测试项目是一个例外。 您可以显示内部来测试项目。 有时可能没问题。 创建其他使用此内部类的公共类,例如:
public class MyPublicHelper
{
public void CallMyInternalMethod()
{
MyInternalClass obj = new MyInternalClass();
obj.MyInternalMethod();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.