Firestore 反序列化错误:“无法在 C# .NET 应用程序中为 UserCustomData 类型创建转换器”

问题描述 投票:0回答:1

我正在 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 软件包已安装且是最新的。

任何人都可以帮助我理解为什么会出现此错误以及如何解决它?

c# .net firebase google-cloud-firestore
1个回答
0
投票

我观察到与此错误相关的两个问题:

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
。在你的情况下不太可能,但值得检查。

© www.soinside.com 2019 - 2024. All rights reserved.