必须是在redis中具有公共无参数构造函数的非抽象类型

本文关键字:构造函数 参数 类型 抽象类 抽象 redis | 更新日期: 2023-09-27 18:24:05

当我保存一个对象时,我会得到以下错误:

must be a non-abstract type with a public parameterless constructor in order to use it as parameter 'T' in the generic type or method 'ServiceStack.Redis.RedisClient.Store<T>(T)

RedisClass.GetInstance().Store(msg); // Error here
RedisClass.GetInstance().Save();

由于这是第三方的类,我无法编辑它。如何保存此对象?

必须是在redis中具有公共无参数构造函数的非抽象类型

您能围绕第三方对象创建一个包装器来调用其构造函数,然后存储包装器吗?

例如

public class MyWrapper
{
    public ThirdPartyObject ThirdPartyInstance { get; set; }
    public MyWrapper()
    {
        ThirdPartyInstance = new ThirdPartyObject("Constructors");
    }
}

错误是由IBasicPersistenceProvider.Store<T>()具有new()泛型约束。相反,请尝试使用IBasicPersistenceProvider<T>。商店():

RedisClass.GetInstance().As<ThirdPartyClass>().Store(msg);