首页 > 解决方案 > 无法将类型“MongoDB.Driver.ReplaceOneResult”隐式转换为“T”

问题描述

我在我的 WinForm 项目中使用 MongoDB,并正在创建一个可用于upsert在数据库中记录的实用程序函数。

到目前为止的方法如下:

public async Task<T> UpdateRoomType<T>(string table, string roomTypeName, T record) 
{
    var collection = db.GetCollection<T>(table);

    var filter = Builders<T>.Filter.Eq(Constants.ROOM_TYPE, roomTypeName);

    var result =  await collection.ReplaceOneAsync(
        filter,
        record,
        new UpdateOptions { IsUpsert = true }
        );

    return result;
}

但是我遇到了构建错误:

无法将类型“MongoDB.Driver.ReplaceOneResult”隐式转换为“T”

如何修复此函数以正确地将插入的记录返回给调用者?

标签: c#mongodbgenerics

解决方案


您应该返回适​​当的类型:

public async Task<ReplaceOneResult> UpdateRoomType<T>(string table, string roomTypeName, T record)
                        ^
                        |

该错误告诉您您正在返回一个类型的对象:MongoDB.Driver.ReplaceOneResult这似乎是:

return result;

但是在您的方法中,您将返回类型声明为T

public async Task<T> UpdateRoomType<T>

因此错误。


推荐阅读