我正在 C# .NET 应用程序中使用 Firestore,在尝试将 Firestore 文档转换为自定义类 UserCustomData 的实例时遇到反序列化错误。尽管有公共无参数构造函数和公共属性,我还是收到以下错误消息:
您的应用程序中发生了未处理的异常。 无法为 RepoGen.Classes.UserCustomData 类型创建转换器。
这是我的 UserCustomData 类的相关部分:
public class UserCustomData
{
public UserCustomData() { }
public string Username { get; set; }
public string Email { get; set; }
}
以下是我尝试获取和转换 Firestore 文档的方法:
`public static async Task<UserCustomData> GetUserAsync(string uid)
{
DocumentReference docRef = Database.Collection("users").Document(uid);
DocumentSnapshot snapshot = await docRef.GetSnapshotAsync();
if (snapshot.Exists)
{
UserCustomData userCustomData = snapshot.ConvertTo<UserCustomData>();
return userCustomData;
}
else
{
return null;
}
}`
我已经确认Firestore文档中的字段与类中的属性名称完全匹配,包括大小写,并且Firestore文档结构简单,没有嵌套对象
我还确保 Google.Cloud.Firestore NuGet 软件包已安装且是最新的。
任何人都可以帮助我理解为什么会出现此错误以及如何解决它?
我观察到与此错误相关的两个问题:
1 - 用户类需要注释如下:
[FirestoreData]
public class UserCustomData
{
[FirestoreProperty(nameof(Username))]
public string Username { get; set; }
[FirestoreProperty(nameof(Email))]
public string Email { get; set; }
}
就我而言,我发现类注释是强制性的,但没有属性注释它也可以正常工作。
2 - 如果数据类型不匹配也会发生该错误。例如如果字段指定为
int
并且来自 Firestore 的数据是 sting
。在你的情况下不太可能,但值得检查。