CS1729“应用程序”不包含采用1个参数的构造函数

时间:2019-11-26 11:23:25

标签: xamarin xamarin.forms

我在Xamarin Forms Android项目中创建了一个OAuth2Service类,该类继承了IOAuth2Service接口。我需要在类库中使用该类,以便我可以在Xamarin Forms应用程序中执行google身份验证。但是,尽管我将应用程序类设置为接受IOAuth2Service类型的参数,但我仍然收到上述错误消息。这是我的“ App.Xaml.cs”,其中包含Application类。我该怎么办?

 public partial class Application : Xamarin.Forms.Application
    {
       public Application(IOAuth2Service oAuth2Service)
       {
           InitializeComponent();
           MainPage = new NavigationPage(new LoginPage(oAuth2Service));

       }

        protected override void OnStart()
        {
            AppCenter.Start("android=ced94d85-cb85-4ec2-8411-96864a7ec23e;" +
                  "uwp={Your UWP App secret here};" +
                  "ios={Your iOS App secret here}",
                  typeof(Analytics), typeof(Crashes));
       }



    }

2 个答案:

答案 0 :(得分:0)

为什么不像下面的代码那样在OAuth2Service的构造函数中实例化Application类?将OAuth2Service类放在PCL中。

    public Application()
   {
       InitializeComponent();
       OAuth2Service oAuth2Service=new OAuth2Service (); 
       MainPage = new NavigationPage(new LoginPage(oAuth2Service));

   }

如果IOAuth2Service在xxxxx.Droid或xxxxx.IOS文件夹中。您需要将IOAuth2Service转移到PCL。在Android中,您可以使用OnCreate

MainActivity.cs方法实例化它
 protected override void OnCreate(Bundle savedInstanceState)
    {
        TabLayoutResource = Resource.Layout.Tabbar;
        ToolbarResource = Resource.Layout.Toolbar;

        base.OnCreate(savedInstanceState);

        Xamarin.Essentials.Platform.Init(this, savedInstanceState);
        global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
        OAuth2Service oAuth2Service = new OAuth2Service ();
        LoadApplication(new App(oAuth2Service));
    }

在IOS中,您可以使用FinishedLaunching的{​​{1}}方法实例化它

AppDelegate.cs

这是 public override bool FinishedLaunching(UIApplication app, NSDictionary options) { global::Xamarin.Forms.Forms.Init(); OAuth2Service oAuth2Service = new OAuth2Service (); LoadApplication(new App(oAuth2Service)); return base.FinishedLaunching(app, options); } 类。

Application

答案 1 :(得分:0)

IOAuth2Service实际上是一个接口,而不是一个类。我认为您不能从接口创建实例对象。在做出您建议的更改后,我是正确的原因。我收到错误消息:“无法创建抽象类或接口'IOAuth2Service'的实例”