-2

CS1061 'object' 不包含 'Id' 的定义

public static async Task RemoveItem<T>(object obj) where T : class, new()
{
    if (obj == null || db == null)
        return;

    obj = obj as T;

    await db.DeleteAsync<T>(obj.Id); // error
}

这有可能解决还是我已经达到了边缘?

4

1 回答 1

-2

重要提示:该问题被标记为重复并且已经关闭。尽管如此,由于评论,我想分享我的原始解决方案,而不是结果。

打字时,我找到了解决方案:-) 感谢Test if a property is available on a dynamic variable

public static async Task RemoveItem<T>(object obj) where T : class, new()
{
    if (obj == null || db == null)
        return;

    dynamic objA = obj as T;

    try
    {
        int id = objA.Id; // Check if property exists
        await db.DeleteAsync<T>(id);
    }
    catch (Exception)
    {
        throw;
    }
}

评论后编辑:

public static async Task RemoveItem<T>(object obj) where T : class, IDatabaseEntity, new()
{
    if (obj == null || db == null)
        return;

    var entity = obj as IDatabaseEntity;
    await db.DeleteAsync<T>(entity.Id);
}
于 2021-07-19T15:58:37.990 回答