为什么我不能把 [assembly:Dependency()] 放在类的上方

本文关键字:不能 assembly Dependency 为什么 | 更新日期: 2023-09-27 17:56:42

我正在尝试使用此答案在 Xamarin 中实现一些特定于平台的代码,但我在将特定于平台的类设置为依赖项时遇到了问题。我收到以下编译器错误,在标签的assembly字下划线:

程序集和模块属性必须位于文件中定义的所有其他元素之前,但使用子句和 extern 别名声明除外。

我有以下代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Reflection;
using System.Security.Permissions;
using Android.App;
using Android.Content;
using Android.OS;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using ZXing.Net.Mobile.Forms;
using Xamarin.Forms;
namespace MyApp_Xamarin.Droid {
[assembly: Dependency(typeof(View.ActualPage.BarcodeScannerTest))]
public class BarcodeScannerTestClass : View.ActualPage.BarcodeScannerTest
{
    public async void Start(INavigation nav, Page page)
    {
        var scanPage = new ZXingScannerPage();
        scanPage.OnScanResult += (result) =>
        {
            // Stop scanning
            scanPage.IsScanning = false;
            // Pop the page and show the result
            Device.BeginInvokeOnMainThread(() =>
            {
                nav.PopAsync();
                page.DisplayAlert("Scanned Barcode", result.Text, "OK");
            });
        };
        // Navigate to our scanner page
        await nav.PushAsync(scanPage);
    }
}
}

我错过了什么?

为什么我不能把 [assembly:Dependency()] 放在类的上方

正如错误所说,程序集属性必须在文件中的大多数其他程序元素之前声明。命名空间声明(namespace MyApp_Xamarin.Droid)是这些元素之一。在此之前,您必须移动该属性:

[assembly: Dependency(typeof(View.ActualPage.BarcodeScannerTest))]
namespace MyApp_Xamarin.Droid 
{
    public class BarcodeScannerTestClass : View.ActualPage.BarcodeScannerTest

特定于平台的类设置为条目依赖项或任何控制器的问题。

 I get the following compiler error, underlined the assembly word of the tag:

程序集和模块属性必须位于文件中定义的所有其他元素之前,但使用子句和 extern 别名声明除外。

using CustomrendersAll.customRenders;
using Xamarin.Forms.Platform.Android;
using Xamarin.Forms;
namespace CustomrendersAll.Droid.customRenders
{
 [assembly: ExportRenderer (typeof(MyEntry), typeof(customRenderAndriod))]
    public class customRenderAndriod : EntryRenderer
    {  
            protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
            {
                base.OnElementChanged(e);
                if (Control != null)
                {
                    Control.SetBackgroundColor(global::Android.Graphics.Color.LightGreen);
                }
            }
    }
}

上面有一些错误,下面的代码是正确的

using CustomrendersAll.customRenders;
using Xamarin.Forms.Platform.Android;
using Xamarin.Forms;
using CustomrendersAll.Droid.customRenders;
[assembly: ExportRenderer(typeof(MyEntry), typeof(customRenderAndriod))]
namespace CustomrendersAll.Droid.customRenders
{
    public class customRenderAndriod : EntryRenderer
    {  
            protected override void OnElementChanged(ElementChangedEventArgs<Entry> e)
            {
                base.OnElementChanged(e);
                if (Control != null)
                {
                    Control.SetBackgroundColor(global::Android.Graphics.Color.LightGreen);
                }
            }
    }
}

在类不正确之前的方式第一个代码是我写的类方式程序集这个代码是

[assembly: ExportRenderer(typeof(Pclclass), typeof(customRenderAndriod))]

在命名空间添加程序集的第二个代码之前,此代码是

[assembly: ExportRenderer(typeof(Pclclass), typeof(customRenderAndriod))]

尝试使用

使用 System;

使用 System.Reflection;using System.Security.Permissions;