我有调用依赖服务的代码来访问iOS和Android中的PopUp实现。它是这样做的:
DependencyService.Get<IPopUp>().Popup("XYZ", "ABC",
(Color)Application.Current.Resources["PopUpTitleColor"],
(Color)Application.Current.Resources["PopUpMessageColor"],
(Color)Application.Current.Resources["PopUpBackgroundColor"],
(Color)Application.Current.Resources["PopUpSeparatorColor"],
(sen, args) => {
DidShowFirstMessage = true;
});
public interface IPopUp
{
void Popup(string title,
string message,
Color titleColor,
Color messageColor,
Color popUpBackgroundColor,
Color popUpSeparatorColor,
EventHandler handler);
}
[assembly: Dependency(typeof(PopupImplemention))]
namespace Japanese.iOS.CustomRenderers
{
public class PopupImplemention : IPopUp
{
public void Popup(string title,
string message,
Color titleColor,
Color messageColor,
Color popUpBackgroundColor,
Color popUpSeparatorColor,
EventHandler handler)
{
每次调用弹出窗口时,它都使用相同的颜色参数。有没有办法在不更改弹出窗口实现的情况下,我可以像这样称呼弹出窗口:
DependencyService.Get<IPopUp>().Popup("XYZ", "ABC", (sen, args) => {
DidShowFirstMessage = true;
});
由于它是一个接口,我认为我不能硬编码参数,所以想知道我该怎么做。
您可以创建扩展方法:
public static void Popup(this IPopUp popup, string title, string message, EventHandler handler)
{
popup.Popup(
title,
message,
(Color)Application.Current.Resources["PopUpTitleColor"],
(Color)Application.Current.Resources["PopUpMessageColor"],
(Color)Application.Current.Resources["PopUpBackgroundColor"],
(Color)Application.Current.Resources["PopUpSeparatorColor"],
handler
);
}