记录一个assembly: Dependency造成的错误。
2019-04-28 本文已影响1人
毛毛v5
一个xamarin.forms工程需要一个Toast来提示信息,大家知道forms没有内置这个简单的控件,不可思议。要自己引入不同平台的实现。于是,偷懒用向导创建了一个c#类。结果用 [assembly: Dependency(typeof(Toast_Android))] 引入实现的时候居然提示:
“错误CS7036 未提供与“DependencyAttribute.DependencyAttribute(string, LoadHint)”的必需形参“loadHintArgument”对应的实参” 。搞了半天摸不着头脑。突然想起来以前有添加过这种代码,成功了,没出错误啊。 于是翻出老代码。也是对比了半天。头都钻到屏幕里面去了,还是没看出啥区别。撸了一把冷静了一下,突然看出区别来了。如下图:
![](https://img.haomeiwen.com/i12235517/9f91cdbe0f0cc783.jpg)
![](https://img.haomeiwen.com/i12235517/a7ae1b5a0c8d594c.jpg)
真是蛋疼啊。。刚开始直接忽略了系统生成的using部分,就是蓝色框框的部分。忽然看到using部分不一样,于是把正确的代码块的using部分替换到了出错的代码快中,立马ok! 天知道向导自动using引入的头文件是怎么污染了 assembly: Dependency . -.-!
using System;
using Xamarin.Forms;
using AdminTools.Services;
using WorkingWithWebview.Android;
using Android.Widget;
using Plugs.Droid;
[assembly: Dependency(typeof(Toast_Android))]
//[assembly: Dependency(typeof (Toast_Android),LoadHint.Default)]
namespace Plugs.Droid
{
class Toast_Android : IToast
{
public void LongAlert(string message)
{
Toast.MakeText(Android.App.Application.Context, message, ToastLength.Long).Show();
}
public void ShortAlert(string message)
{
Toast.MakeText(Android.App.Application.Context, message, ToastLength.Short).Show();
}
}
}