gpt4 book ai didi

c# - 给定 C# 中的基类,如何实现此类?

转载 作者:行者123 更新时间:2023-12-02 22:00:39 24 4
gpt4 key购买 nike

我正在尝试在编译的程序集中使用基类 (DataStore) 在 C# 中实现一个类。它想要这样的签名(RavenDb 的实现不相关):

    public RavenDbDataStore(TimeSpan objectLifetime) : base(objectLifetime)
{
}

public RavenDbDataStore(TimeSpan objectLifetime, bool enableCaching) : base(objectLifetime, enableCaching)
{
}

然而,调用此类的对象需要一个采用两个字符串的构造函数。我收到有关基类的警告,DataStore 不包含任何无参数构造函数。

这没有意义,查看我正在处理的项目的 API,另一个类正在做我正在尝试做的事情,并接受两个字符串作为构造函数,同时仅从 DataStore 类继承。

关于如何实现这一点有什么想法吗?

编辑:我犯了一个错误,将第二个构造函数标记为“私有(private)”,它应该是公开的。

尝试时:

公共(public) RavenDbDataStore(TimeSpan objectLifetime, string param1, string param2) : base(objectLifetime) {

我仍然得到:

Could not find constructor in ReflectionUtil.CreateObject: RavenDbDataStore. The constructor parameters may not match or it may be an abstract class. Parameter info: Count: 2. Parameter types: System.String, System.String

最佳答案

问题是你的基类的构造函数有两个参数被标记为private,这意味着你不能使用它。

您只需要使用带有单个参数(TimeSpan)的构造函数,并将其提供给基类​​:

public YourClass(TimeSpan lifetime) : base(lifetime)
{
}

如果你想要第二个提供其他参数的构造函数,那是可能的:

public YourClass(TimeSpan lifetime, string someOtherParam) : base(lifetime)
{
// use someOtherParam
}

编辑响应编辑:

错误信息:

Parameter info: Count: 2. Parameter types: System.String, System.String

建议您需要将两个字符串传递给基类,但不是生命周期:

public RavenDbDataStore(TimeSpan objectLifetime, string param1, string param2) 
: base(param1, param2) { }

关于c# - 给定 C# 中的基类,如何实现此类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16989810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com