一個xamarin.forms工程需要一個Toast來提示信息,大家知道forms沒有內置這個簡單的控件,不可思議。要自己引入不同平臺的實現。于是,偷懶用向導創建了一個c#類。結果用 [assembly: Dependency(typeof(Toast_Android))] 引入實現的時候居然提示:
“錯誤CS7036 未提供與“DependencyAttribute.DependencyAttribute(string, LoadHint)”的必需形參“loadHintArgument”對應的實參” 。搞了半天摸不著頭腦。突然想起來以前有添加過這種代碼,成功了,沒出錯誤啊。 于是翻出老代碼。也是對比了半天。頭都鉆到屏幕里面去了,還是沒看出啥區別。擼了一把冷靜了一下,突然看出區別來了。如下圖:
出錯的代碼
正確的代碼
真是蛋疼啊。。剛開始直接忽略了系統生成的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();
}
}
}