我尝试将Firebase身份验证管理到一个自定义类中,有关身份验证的所有工作都将完成。首先,我尝试通过调用
在MainActivity.cs中创建此实例。AuthService.GetInstance();
但是它在运行时因以下错误而崩溃:
无法找到类型AuthService的默认构造函数。请提供缺少的构造函数。
这是我的类AuthService,我试图初始化我的单身人士。这个构造函数有什么问题?这是因为我的类继承了Java.Lang.Object和singleton不能像以前那样工作吗?
public class AuthService : Java.Lang.Object,
IOnSuccessListener,
IOnFailureListener
{
public User CurrentUser;
private FirebaseAuth firebaseAuth;
private static AuthService _instance = null;
private static System.Object _mutex = new object();
public IntPtr Handle {get;}
public static AuthService GetInstance()
{
if (_instance == null)
{
lock (_mutex) // now I can claim some form of thread safety...
{
if (_instance == null)
{
_instance = new AuthService();
}
}
}
return _instance;
}
private AuthService()
{
Initialise();
}
private void Initialise()
{
this.firebaseAuth = FirebaseAuth.Instance;
if (FirebaseAuth.Instance.CurrentUser != null)
{
this.CurrentUser = User.GetInstance();
}
}
}
}
感谢您的帮助!
答案 0 :(得分:1)
您的默认构造函数为private
(有点奇怪),将其设为public
public AuthService()
{
...
Private Constructors (C# Programming Guide)
私有构造函数是特殊的实例构造函数。它是 通常用于仅包含静态成员的类。 如果上课 有一个或多个私有构造函数,没有公共构造函数,其他 类(嵌套类除外)无法创建此类的实例。
答案 1 :(得分:1)
要正确实现单例模式,必须避免将构造函数公开。因此,应避免使用Java.Lang.Object,它似乎迫使您拥有公共构造函数。