在Xamarin中,我正在尝试创建一个可以从主Forms项目中使用的库。这个库需要从iOS和Android的绑定项目中创建,因为它们分别使用用Objective-C和Java编写的本机代码。
为此,我在共享项目" Binding Project Interface"中创建了一个公共接口IExample
。并在ExampleiOS
和ExampleAndroid
这两个绑定项目中实现了此接口。然后我实例化每个平台的App项目中的实现,并将它们传递到Common App Project。
这是我遇到麻烦的地方,因为Common App Project和Binding Projects都引用了Binding Project Interface。因此,平台App Projects从两个不同的地方继承IExample
,我收到错误:
The imported type 'IExample' is defined multiple times
如何修改框架,以便可以从Common App Project访问当前绑定项目的代码?
我无法删除引用A,因为那时公共项目不知道需要传递实例的接口。我无法删除引用B或C,因为绑定项目无法实现接口。我无法删除引用D或E,因为应用程序项目需要实例化绑定项目中的实现。我无法删除引用F或G,因为应用程序项目需要访问公共代码才能将实例化的实现传递给它。
从一个项目到另一个项目的箭头表示第一个项目是它所指向的项目的参考:
答案 0 :(得分:0)
Common Binding Project应该是PCL项目,而不是共享项目。作为一个共享项目,这些文件只是被复制到引用项目中,因此接口实际上被编译了两次。