ResolutionGroupName和多个效果

时间:2017-10-24 08:37:06

标签: xamarin xamarin.forms effects .net-attributes

我创建了一个名为 Effects 的文件夹,该文件夹应该包含我项目的所有效果。它有一个效果,具有以下属性:

[assembly: ResolutionGroupName("Effects")]
[assembly: ExportEffect(typeof(SomeProject.iOS.Effects.SliderEffect), "SliderEffect")]

现在我想添加另一个效果(作为单独的文件),使用相同的ResolutionGroupName,但我得

  

复制' ResolutionGroupName'属性

我理解that

  

请注意,此属性每个项目只能应用一次。

  

标识组名的属性,通常是公司名称或反向公司URL,为效果名称提供范围。

,但是如何在单独的文件中使用多个效果?我发现的所有例子都只使用一种效果......

1 个答案:

答案 0 :(得分:5)

  

请注意,此属性每个项目只能应用一次。

是的,这是正确的,您只能使用它一次,对于您不必声明ResolutionGroupName的其他效果。系统将根据唯一效果名称解析效果。

下面的示例代码应该给出一个清晰的想法。

下面的代码将DummyApp作为groupname,不能为不同的效果和ImageEffects更改,这对于执行来说应该是唯一的。

[assembly: ResolutionGroupName("DummyApp")]
[assembly: ExportEffect(typeof(ImageEffects), "ImageEffects")]
namespace DummyApp.Droid.Effects
{
    public class ImageEffects : PlatformEffect
    {

现在,对于第二个效果,您只需声明并注册导出效果属性。

[assembly: ExportEffect(typeof(FocusEffect), "FocusEffect")]
namespace GrowerApp.Droid.Effects
{
    public class FocusEffect : PlatformEffect
    {

现在,Forms声明示例代码将是

public class ImageEffects : RoutingEffect
    {
        public ImageEffects() : base("DummyApp.ImageEffects")
        {

        }
    }

    public class FocusEffect : RoutingEffect
    {
        public FocusEffect() : base("DummyApp.FocusEffect")
        {

        }
    }

希望这有帮助!