C# 为什么可以';我不能将[assembly:Dependency()]放在类之上吗?

C# 为什么可以';我不能将[assembly:Dependency()]放在类之上吗?,c#,xamarin.forms,C#,Xamarin.forms,我正在尝试使用在Xamarin中实现一些特定于平台的代码,但是在将特定于平台的类设置为依赖项时遇到了问题。我得到以下编译器错误,在标记的程序集字下面加下划线: 除使用子句和外部别名声明外,程序集和模块属性必须位于文件中定义的所有其他元素之前 我有以下代码: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Reflection; using Syst

我正在尝试使用在Xamarin中实现一些特定于平台的代码,但是在将特定于平台的类设置为依赖项时遇到了问题。我得到以下编译器错误,在标记的
程序集
字下面加下划线:

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

我有以下代码:

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);
    }
}
}
我缺少什么?

尝试使用


使用制度;运用系统反思;使用System.Security.Permissions

因为错误说明必须在文件中的大多数其他程序元素之前声明assembly属性。名称空间声明(
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:
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子句和extern别名声明除外。

 I get the following compiler error, underlined the assembly word of the tag:
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);

                }
            }

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

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

在你给我们看的代码上面有什么东西吗?我希望,至少会有一些使用声明的
。这段代码在名称空间声明中吗?assembly属性必须在该属性之外应用。我使用代码中的声明添加了
名称空间
。因此,“namespace MyApp_Xamarin.Droid”是错误所指的“元素”之一。必须先移动属性声明。@Exec-新问题进入新问题。如果它们是相关的,您可能希望链接回上一个。但是,(我在这里听起来有点刺耳)仔细阅读你已经收到的错误消息,确保你的下一个问题没有得到回答。他为什么要尝试使用你建议的方法?尝试过,没有效果,但代码甚至没有使用它(灰显)。汇编意味着dll或exe。。如果要使用现有dll或必须从操作系统兼容地检查dll,则可以使用。