gpt4 book ai didi

c# - 无法调用接口(interface)的已实现函数(名称在当前上下文中不存在)

转载 作者:行者123 更新时间:2023-12-05 08:28:13 25 4
gpt4 key购买 nike

我有一个公共(public)接口(interface),它有两个方法:

public interface IClickStrategy : IStrategy
{
void InsertSending(MailingResult sending, string connectionString, string tableName);
void InsertClick(ClickResult click, MailingResult mailing, int campaignId, string connectionString, string tableName);
}

我有一个类实现了这个接口(interface)函数。所以当我实现这些功能时,它们是正确的,但当然它们不是公开的:

void IClickStrategy.InsertSending(MailingResult sending, string connectionString, string tableName){
...
}

我试图从我的类中调用这个函数,它给了我一个实际上有意义的错误:

"The name 'InsertSending' does not exist in the current context."

我想知道的是如何在我的类中使用这些函数?这样做的正确方法是什么?谢谢。

最佳答案

问题是您使用的是 explicit interface implementation .您不必那样做。你可以只写:

public void InsertSending(...)
{
...
}

并在别处正常调用该方法。但是,如果您使用显式接口(interface)实现,则只能通过接口(interface)类型而不是您的类类型的引用来调用该方法。所以你可以使用:

IClickStrategy strategy = this;
strategy.InsertSending(...);

就我个人而言,我尽量不使用显式接口(interface)实现,除非我有充分的理由这样做 - 根据我的经验,这往往会使事情变得更加复杂,这只是其中的一个例子。

关于c# - 无法调用接口(interface)的已实现函数(名称在当前上下文中不存在),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16852077/

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