【发布时间】:2019-01-24 19:14:29
【问题描述】:
我遇到了 Xamarin 表单中的平台效果问题。这些效果以共享库格式工作,我们现在正在迁移到 .NET Standard 2.0,原因超出了本文的范围。
项目设置
- VS 2017 15.8.0
- Xamarin 表单 3.1.0.697729
- 两个 .Net Standard 2.0 项目(一个用于组件,另一个用于主 UI)
- 两个 Android 项目(一个可以运行,另一个是 Android .dll)
- 两个 iOS 项目(相同)
主要问题 我在 Android .dll 中的平台效果都不起作用。它们都解析为 null 效果。
根据文档,我的设置是正确的。 (文档here)
我发现了两个不同的问题并且遇到了难题。
- 当我完全按照说明将 [assembly: ResolutionGroupName("MyGroupName")] 放在平台渲染器本身上时,Xamarin 的依赖解析器会出现异常。没有消息,只有一个异常和堆栈跟踪返回到 RoutingEffect 的构造函数。
- 当我使用稍微不同的模式并将其注册到 .NET Standard 2.0 项目中空文件的命名空间时,所有效果都返回为 null 效果。
我一直在谷歌搜索和挖掘论坛无济于事。有谁知道可能是什么问题?
旁注:所有自定义渲染器都在使用静态 Init() 技巧后工作,但不是效果。我还尝试让 typeof() 语句同时引用该类的 Android 版本和该类的 .NET Standard 2.0 版本。
为了完整起见,这就是我要说的。
NET 标准 2.0:
namespace MyBaseNamespace.Components.Effects
{
public class SearchBarStylingEffect : RoutingEffect
{
public SearchBarStylingEffect() : base("MyGroupName.SearchBarStylingEffect")
{
}
}
}
安卓:
[assembly: ResolutionGroupName("MyGroupName")]
[assembly: ExportEffect(typeof(SearchBarStylingEffect), "SearchBarStylingEffect")]
namespace MyBaseNamespace.Components.Android.Renderers.Effects
{
public class SearchBarStylingEffect : PlatformEffect
{
…
}
}
(iOS和Android一样,只是命名空间不同)
【问题讨论】:
标签: xamarin.forms