派生接口中的新方法声明

2023-12-15

我最近研究了一些代码,遇到了一个派生接口,它声明new与基本接口具有完全相同的名称和签名的方法:

public interface IBase
{
    Result Process(Settings settings);
}

public interface IDerived : IBase
{
    new Result Process(Settings settings);
}

我想知道这是否有原因。根据我的理解,我可以安全地删除后一个方法声明并离开IDerived空,而不会破坏任何使用它的代码。我错了吗?

附:如果这很重要,那么这些接口声明还具有以下属性:ComVisible(true), InterfaceType(ComInterfaceType.InterfaceIsIUnknown) and Guid(...).


好吧,你may能够摆脱它 - 但如果你摆脱了方法IDerived,严格来说,实际上并不相同。一个实现实际上可以提供两种不同的方法来不同地实现两个接口方法。

例如:

using System;

public interface IBase
{
    void Process();
}

public interface IDerived : IBase
{
    new void Process();
}

public class FunkyImpl : IDerived
{
    void IBase.Process()
    {
        Console.WriteLine("IBase.Process");
    }

    void IDerived.Process()
    {
        Console.WriteLine("IDerived.Process");
    }
}

class Test
{
    static void Main()
    {
        var funky = new FunkyImpl();
        IBase b = funky;
        IDerived d = funky;
        b.Process();
        d.Process();
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

派生接口中的新方法声明 的相关文章

  • C++ 中本地类中的静态成员变量?

    我知道我们不能宣布static本地类中的成员变量 但其原因尚不清楚 那么请问有人可以解释一下吗 另外 为什么我们不能访问非static函数内部定义的变量 内部已经定义了局部类 直接在局部类成员函数中 在下面给出的代码中 int main i
  • Unix网络编程澄清

    我正在翻阅这本经典书籍Unix网络编程 https rads stackoverflow com amzn click com 0139498761 当我偶然发现这个程序时 第 6 8 节 第 179 180 页 include unp h
  • 如何为 C 分配的 numpy 数组注册析构函数?

    我想在 C C 中为 numpy 数组分配数字 并将它们作为 numpy 数组传递给 python 我可以做的PyArray SimpleNewFromData http docs scipy org doc numpy reference
  • 如何修复此错误“GDI+ 中发生一般错误”?

    从默认名称打开图像并以默认名称保存 覆盖它 我需要从 Image Default jpg 制作图形 将其放在 picturebox1 image 上并在 picurebox1 上绘制一些图形 它有效 这不是我的问题 但我无法保存 pictu
  • XamlReader.Load 在后台线程中。是否可以?

    WPF 应用程序具有从单独的文件加载用户控件的操作 使用XamlReader Load method StreamReader mysr new StreamReader pathToFile DependencyObject rootOb
  • C++中的类查找结构体数组

    我正在尝试创建一个结构数组 它将输入字符串链接到类 如下所示 struct string command CommandPath cPath cPathLookup set an alarm AlarmCommandPath send an
  • 使用 C 语言使用 strftime() 获取缩写时区

    我看过this https stackoverflow com questions 34408909 how to get abbreviated timezone and this https stackoverflow com ques
  • 无法在 Windows 运行时组件库的 UserControl 中创建依赖项属性

    我想在用户控件内创建数据可绑定属性 这个用户控件包含一个 Windows 运行时组件 项目 我使用下面的代码来创建属性 public MyItem CurrentItem get return MyItem GetValue Current
  • 回发或回调参数无效。使用“”启用事件验证

    当我从客户端回发页面时 出现以下错误 我有修改客户端 asp ListBox 的 JavaScript 代码 我们该如何解决这个问题 错误详细信息如下 Server Error in XXX Application Invalid post
  • 关于在 Windows 上使用 WiFi Direct Api?

    我目前正在开发一个应用程序 我需要在其中创建链接 阅读 无线网络连接 在桌面应用程序 在 Windows 10 上 和平板电脑 Android 但无关紧要 之间 工作流程 按钮 gt 如果需要提升权限 gt 创建类似托管网络的 WiFi 网
  • 如何将整数转换为 void 指针?

    在 C 中使用线程时 我面临警告 警告 从不同大小的整数转换为指针 代码如下 include
  • C++:.bmp 到文件中的字节数组

    是的 我已经解决了与此相关的其他问题 但我发现它们没有太大帮助 他们提供了一些帮助 但我仍然有点困惑 所以这是我需要做的 我们有一个 132x65 的屏幕 我有一个 132x65 的 bmp 我想遍历 bmp 并将其分成小的 1x8 列以获
  • 如何使用 watin 中的 FileUploadDialogHandler 访问文件上传对话框

    我正在使用 IE8 和 watin 并尝试通过我的网页测试上传文件 我不能简单地使用 set 方法设置上传文件 例如 ie FileUpload Find ById someId Set C Desktop image jpg 因为上传文本
  • 批量更新 SQL Server C#

    我有一个 270k 行的数据库 带有主键mid和一个名为value 我有一个包含中值和值的文本文件 现在我想更新表格 以便将每个值分配给正确的中间值 我当前的方法是从 C 读取文本文件 并为我读取的每一行更新表中的一行 必须有更快的方法来做
  • 使用 Moq 使用内部构造函数模拟类型

    我正在尝试模拟 Microsoft Sync Framework 中的一个类 它只有一个内部构造函数 当我尝试以下操作时 var fullEnumerationContextMock new Mock
  • 将 log4net 与 Autofac 结合使用

    我正在尝试将 log4net 与 Autofac 一起使用 我粘贴了这段代码http autofac readthedocs org en latest examples log4net html http autofac readthed
  • gcc 的配置选项如何确定默认枚举大小(短或非短)?

    我尝试了一些 gcc 编译器来查看默认枚举大小是否很短 至少一个字节 强制使用 fshort enums 或无短 至少 4 个字节 强制使用 fno short enums user host echo Static assert 4 si
  • 如何在 C# 中调整图像大小同时保持高质量?

    我从这里找到了一篇关于图像处理的文章 http www switchonthecode com tutorials csharp tutorial image editing saving cropping and resizing htt
  • 如何使用 Word Automation 获取页面范围

    如何使用办公自动化找到 Microsoft Word 中第 n 页的范围 似乎没有 getPageRange n 函数 并且不清楚它们是如何划分的 这就是您从 VBA 执行此操作的方法 转换为 Matlab COM 调用应该相当简单 Pub
  • 如何正确使用 std::condition_variable?

    我很困惑conditions variables以及如何 安全 使用它们 在我的应用程序中 我有一个创建 gui 线程的类 但是当 gui 是由 gui 线程构造时 主线程需要等待 情况与下面的函数相同 主线程创建互斥体 锁和conditi

随机推荐

  • Conda 仅为 env 设置 LD_LIBRARY_PATH [重复]

    这个问题在这里已经有答案了 我安装了 miniconda3 其中创建了一个名为 py35 的虚拟环境 我有一些只想在这个环境中使用的库 因此他们处于 miniconda3 envs py35 libs 但是 由于 LD LIBRARY PA
  • Java JsonObject 数组值到键

    我是java新手 所以这有点令人困惑 我想获取json格式的字符串 我想要的结果是 user name lamis 我目前正在做的是这样的 JSONObject json new JSONObject json put name Lamis
  • .net 位图改变图像的颜色

    我正在尝试调整图像大小而不丢失任何颜色 但我无法让它发挥作用 看下图 上一张是原图 下一张是经过 NET的 我的问题是 如何保留颜色 我尝试了很多不同的设置 寻找 GDI 错误 更改调色板 将 ImageAttributes 更改为人们在互
  • 聚合与组合

    我想知道之间的关系是Human and a Driver License聚合还是组合 我很清楚Room and a Building关系是一个组合和一个Chair and a Room是一个聚合 但一个Driver License可以在没有
  • Visual Studio 2022 - v.17.6.5 - 在 _Layout.cshtml 中链接安装的 nuget 包 css 文件

    我创建了一个新的 net 6 0 MVC Web project并删除了预装的bootstrap from wwwroot lib因为我想添加它NuGet Package Manager 安装软件包后 文件将显示在我的中作为参考wwwroo
  • 在多个控制器操作中保留值

    在我的控制器中 我有一个数据库中对象的 ID 并且多个操作需要此 ID 来访问该对象 该 ID 是在Index操作并用于填充视图模型 我获取 ID 的方式是通过一个参数 EPiServer CMS 外 将Index行动 所以我无法在其他地方
  • 获取文件夹中的所有音频文件

    如何使用 ManagedQuery 从 Android 中的特定文件夹中获取所有音频文件 表示 ManagedQuery 中的 where 子句应该是什么来过滤 Cursor 结果 Code is String proj MediaStor
  • 使用 PHPmailer 发送多封电子邮件

    编辑 我忘记了我创建了SendMail 函数我自己 这就是为什么解释一开始没有提到它的作用 我在使用 PHPMailer 时遇到了一些问题 https github com PHPMailer PHPMailer 当尝试发送两封电子邮件时
  • 使用 Ruby 在多个操作系统中读取文件名而不会出现编码问题

    我想获取 UTF 8 格式的所有文件名 例如 当我在 Windows 中读取文件名后 我会 filename Iconv iconv UTF 8 Windows 1251 filename 在 Ubuntu 中 我不转换文件名并以 UTF
  • 如何制作类似于 Dropbox 的登录按钮?

    我正在尝试做类似 Dropbox 的登录按钮 有一个线程jQuery 中的 dropbox 登录弹出方法 但我对此无能为力 我希望当我按下登录按钮时将其打开 与 dropbox com 相同 这是示例代码 现在它可以在悬停时运行 但我想要点
  • ASP.NET 自定义控件

    如何创建自定义控件 不是 ASCX 控件 更重要的是 如何在项目中使用它 我不想为它创建一个单独的项目或将其编译为 DLL 服务器控件应编译成 DLL 没有理由害怕在项目中添加额外的程序集 它有助于创建良好的项目组织 ASP NET 服务器
  • jsf2.0 - 如何获取请求范围内其他 jsf 页面 bean 中的值

    我有两个页面 myaccount xhtml 和 selectbank xhtml 在我的帐户页面中 有一个充值帐户选项 当用户按下提交按钮时 用户将在其中输入金额 然后它将使用以下 bean 方法转到选择银行页面 public Strin
  • 更改 mat-list-option 中的文本颜色

    我在用mat selection list组件其中mat list option正在显示一个contact list如下所示 Now the background color当我点击特定时正在改变contact name 例如格雷姆天鹅 和
  • 如何获取 Rplotly 的旭日图中点击切片的 event_data

    当使用plotly R包在Shiny应用程序中创建旭日饼图时 用户可以单击图来动态放大 缩小 我们希望能够下载当前选定 居中片段的一些数据 但是 我们无法从所有可能的 eventdata 选项中找到此信息 有悬停事件 但这还不够 因为用户可
  • Nokogiri 解析 ajax 加载的内容

    nokogiri 是否可以解析通过 ajax 加载的内容 如果不是 我将如何实现这一目标 Nokogiri 无法看到 AJAX 内容 因为它不是 Javascript 解析器 因此无法解释它并执行所需的请求 您想要的是 Watir 或其衍生
  • Bootstrap typeahead 绑定值与淘汰赛 js 不起作用

    我有一个使用淘汰赛创建的 ViewModel 其中包含我的产品的所有信息 它看起来像这样 var ProductViewModelDS function data var self this self ProductSKUID ko obs
  • 根据java中的字母将按字母顺序排序的列表拆分为子列表

    我在java中有一个排序列表 我只想根据列表每个索引的第一个字母将该列表拆分为子列表 例如 列表包含 calculator catch doll elephant 我想要子列表为 calculator catch doll elephant
  • Grails 3 自动重新连接 MS Sql Server

    我正在 Grails 3 2 2 上开发一个 Web 应用程序 使用 spring boot 和 hibernate 以及 MS SQL Server 作为后端数据库 我希望每当 SQL Server 在重新启动或出现任何其他问题后恢复时
  • http.get 被调用两次

    我有这个 http get 请求 但它被触发了两次 它在我的构造函数内 import Component from angular core import NavController LoadingController from ionic
  • 派生接口中的新方法声明

    我最近研究了一些代码 遇到了一个派生接口 它声明new与基本接口具有完全相同的名称和签名的方法 public interface IBase Result Process Settings settings public interface