C# 钻石式继承(接口实现)
如果一个类从两个单独的接口实现接口,它的行为是否完全好像仅实施一次? 示例: public interface IAnimal { /* ... */ } public interface IFullAnimal : IAnimal { /* ... */ } public interface IBear : IAnimal { /* ... */ } public interface IFullBear : IBear, IFullAnimal { /* ... */ } // and implementing IFullBear: public class FullBear : IFullBear { /* ... */ } 上面,FullBear从IFullAnimal和IBear到IFullBear实现IAnimal.这是否引入了有关实施ianimal 的任何怪异行为,因为IFullAnimal和IBear均未提供有关实施IAnimal> 的任何信息(因为该语
2 2023-05-22
编程技术问答社区
基类实现基接口,派生/具体类实现扩展接口,为什么?
我正在遵循一本书,即" .net域驱动的设计". 问题基于场景,如下图所示: 图: http://screencast.com/t/a9uuljvw0 在此图中, a)iRepository接口由(抽象基类)repositorybase实现,而 b)iRepository界面也通过接口ICompanyRepository(icompanyrepository : irepository)扩展. c)icompanyRepository由公司repository实现,该公司是从sqlrepositorybase派生的,该基础是从repositorybase派生的(;如A点中所述)实现IREpository,并实现IREPOSITOR,如果是iCompanyRepository,则是父母的). d)我创建一个接口ICompanyRepository的变量,该变量具有Clas CompanyRepository对象的引用,如下: ICompany
4 2023-05-22
编程技术问答社区
libxml2是否支持XPath 2.0?
我尝试使用XPath 2.0 exp //span/string(.)在libxml2中,但它不起作用. 所以,我的问题是:libxml2支持XPath 2.0是否? 据我所知, 解决方案 不是. XPATH 2.0实现的主要多数是XSLT 2.0处理器或Xquery处理器的一部分. 其他解决方案 根据此2007电子邮件不会也不会支持XPath 2.0. 其他解决方案 您可能对 xPath 2.0扩展到libxml2 - 但是, 2个警告:正在进行中的工作,仅用于非商业用途. 希望这会有所帮助, 最好的问候,Carsten ps: 我既不隶属于从事libx的人,也没有任何个人经验或超越他们网站的信息的知识.
2 2023-05-04
编程技术问答社区
在MVC4中显示了一个错误,我必须实现一些接口,但我已经完成了。
我正在尝试创建自己的滤镜属性以支持多语言. 这个想法很简单. URL代表语言. * http://host.ext/ en /rest_of_the_url*将以英语和 打开 * http://host.ext/ hy /rest_of_the_url*将在亚美尼亚人打开. 问题是在运行时说多语言filterattribute 这是错误文本:"给定过滤器实例必须实现以下一个或多个过滤器接口:iAuthorizationFilter,iRinctionFilter,iresultfilter,iexceptionfilter." > 在这里我将其用作全局过滤器. namespace TIKSN.STOZE.WebApp { public class FilterConfig { public static void RegisterGlobalFilters(System.Web.Mvc.GlobalFilterCollecti
0 2023-04-05
编程技术问答社区
一个类可以扩展Collection对象吗?
我正在尝试在新类中扩展vba Collection对象的功能,并使该类成为Collection的继承,但是Implements Collection语句给我以下错误: 实施机构的不良接口:方法 具有其名称. 什么强调? Add,Item,Remove和Count是Collection文档中列出的唯一方法.这四个都不明显. edit :要澄清,我正在做一个称为UniformCollection的类(仅接受所有类型的成员,灵感来自我知道我必须为For Each工作的添加方法/属性编写委派方法/属性,并且我已经这样做了. 我的问题是Implements Collection语句给我上述错误. 奖励问题:Count是Collection的方法还是属性?帮助称其为属性,但是VBA编辑器中的对象浏览器称其为函数,即方法(飞黄色框). 解决方案 您正在遇到VBA中实施的局限性之一.如果其他类具有任何公共方法或属性,则不能实现另一个类. Collection课程当然
16 2023-03-18
编程技术问答社区
错误,我必须在一个类中实现一个函数,尽管函数已被定义。
我得到错误:Class 'QueryParameterComparer' must implement 'Function Compare(x As QueryParameter, y As QueryParameter) As Integer' for interface 'System.Collections.Generic.IComparer(Of QueryParameter)'. 在此类定义上: Protected Class QueryParameterComparer Implements IComparer(Of QueryParameter) Public Function Compare(x As QueryParameter, y As QueryParameter) As Integer If x.Name = y.Name Then Return Str
4 2023-03-11
编程技术问答社区
实现JSR-353(JSON)的API是什么
我刚刚发现杰克逊没有实现JSR-353,我们已经设计了该模块.因此,我迫切地急于找到该API的替代品以开始工作! :D 我搜索了实现标准但找不到任何有趣结果的API,因为我们计划使用标准进行编码并迫使系统使用特定实现(我拼命搜索的API) 解决方案 参考实施 这是 >其继任者 jsr 374: JSON处理1.1 Java EE 8: https://javaee.github.io/jsonp/ 绑定 相关是 jsr 367:用于JSON BINDING(JSON-B) 及其参考实现, eclipse yasson . 其他解决方案 Genson Genson库声称要实现JSR-353. 我没有自己尝试过.最近,我还在寻找一个很好的JSON图书馆,我尝试了其中的3个,最终与Jackson一起定居,因为它最好满足我的需求.不同的是,我不是在寻找精确实现标准的库,我只是在寻找简单的东西,并且可以做我想做的事情. 您也可以检查G
10 2023-02-17
编程技术问答社区
我可以全局地设置使用的接口实现吗?
我有一个接口: public interface IHHSDBUtils { void SetupDB(); bool TableExists(string tableName); . . . ...有多个实施者: public class SQLiteHHSDBUtils : IHHSDBUtils public class SQCEHHSDBUtils : IHHSDBUtils public class FlatfileHHSDBUtils : IHHSDBUtils public class TestHHSDBUtils : IHHSDBUtils 我希望能够从全球可访问的位置指定哪个实施者,例如: public static class HHSConsts { public static IHHSDBUtils hhsdbutil = SQLiteHHSDBUtils; ...然后从应用中的任何地方称呼它:
在C#中,是否可以像在VB.NET中那样,使用不同名称的成员来实现一个接口成员?
好吧,这是我要问的问题,而不是在展示良好的编码实践(实际上可以认为是不良的实践)中,而是关于"可以"的方法. 也就是说,在vb.net中,您实现了这样的界面... Sub SomeInterfaceMember() Implements ISomeInterface.SomeInterfaceMember End Sub 在C#中,您会明确地这样做(只能通过接口来调用)... void ISomeInterface.SomeInterfaceMember(){} 或更简单地,隐含地这样(在这种情况下,您可以直接调用它,也可以通过界面调用)... void SomeInterfaceMember(){} //
8 2023-02-13
编程技术问答社区
为什么这个实现者方法没有看到它的兄弟姐妹?
我有一个实现接口的类: public class SQLiteHHSDBUtils : IHHSDBUtils { void IHHSDBUtils.SetupDB() { . . . if (!TableExists("AppSettings")) . . . bool IHHSDBUtils.TableExists(string tableName) { . . . 它找不到坐在下面的兄弟(if (!TableExists()): 名称" tableexists"在当前上下文中不存在 如何/为什么看不到它? 解决方案 您有一个显式接口实现.除非将当前实例施加到接口类型: ,否则您无法直接访问接口方法: if (!((IHHSDBUtils)this).TableExists("AppSettings")) 来自 13.4.1显式界面成员实施
10 2023-02-10
编程技术问答社区
在覆盖继承的方法时,避免明确的类型转换
我有一个基本的抽象类,也实现了特定的接口. public interface IMovable where TEntity: class where T: struct { TEntity Move(IMover moverProvider); } public abstract class Animal : IMovable { ... public virtual Animal Move(IMover moverProvider) { // performs movement using provided mover } } 然后,我继承了类,其中一些必须覆盖基类的接口实现方法. public class Snake : Animal { ... public override Animal Move(IMov
6 2023-02-09
编程技术问答社区
C# 8.0默认接口成员的意外行为
考虑以下代码: interface I { string M1() => "I.M1"; string M2() => "I.M2"; } abstract class A : I {} class C : A { public string M1() => "C.M1"; public virtual string M2() => "C.M2"; } class Program { static void Main() { I obj = new C(); System.Console.WriteLine(obj.M1()); System.Console.WriteLine(obj.M2()); } } 它在.NET Core 3.1.402中产生以下意外输出: I.M1 C.M2 class A没有I成员的隐式或明确实现,因此我希望默认实现用于C,因为C继承了A
26 2023-02-09
编程技术问答社区
从加载的程序集中找到实现接口的对象--如何比较类型?
我有类,可以将所有组件加载到目录中,然后获取所有类型,看看它们是否实现接口. 我无法进行类型的比较.在调试器中,我看到我的类型已加载(我感兴趣的一种),如果总是未能进行比较.如果我在本地使用相同的比较代码,则没有问题,我会得到预期的结果.我可以对类型界面进行比较,但我宁愿知道我在做错什么. 测试: // Fails [Fact] public void FindISerialPortTest() { var path = Directory.GetCurrentDirectory(); var results = FindImplementers.GetInterfaceImplementor(path); results.Length.Should().Be(1); results[0].Should().BeAssignableTo
6 2023-02-09
编程技术问答社区
如何快速找到一个接口方法的实现?
是否有一种快速的方法可以找到接口的方法/属性/等的所有实现,而不是引用?这是一些示例代码: public class SomeClass : IBaseClass { public Int32 GetInt() { return 1; } } public interface IBaseClass { public Int32 GetInt(); } public class SomeOtherClass { IBaseClass _someClass; private TestMethod() { _someClass = new SomeClass(); _someClass.GetInt(); } } 我想在查看某个otherclass.testmethod()时快速到达someclass.getInt().如果我右键单击_someclass.getInt(),然后单击"转到定义",它将带我到界面.如果我单击"
6 2023-02-06
编程技术问答社区
在C#中,所有的数组都实现了哪些接口?
作为新的.NET 3.5程序员,我开始学习Linq,发现了以前从未注意到的非常基本的东西: 本书声称每个数组都实现IEnumerable(显然,否则我们无法将linq使用到数组上的对象...).当我看到这个时,我对自己说我从未真正考虑过,我问自己,所有阵列都会实现什么 - 所以我检查了 System.Array使用对象浏览器(因为它是CLR中每个数组的基类),而且令我惊讶的是,它不会实现IEnumerable. 所以我的问题是:定义在哪里?我的意思是,如何准确地分辨出每个阵列都实现哪些界面? 解决方案 来自文档: [...]数组类实现System.Collections.Generic.IList,System.Collections.Generic.ICollection和System.Collections.Generic.IEnumerable通用接口. 在运行时提供了用于数组的实现,因此文档构建工具不可见. 编辑:正如
22 2023-02-06
编程技术问答社区
我们能不能在Spring中不通过任何实现来自动连接一个接口?
我们必须与合作伙伴共享我们的代码基础,但我们不想揭示某些服务的实施. 说我们有一个接口FooService及其实现FooServiceImpl. public interface FooService { void doSomething(); } @Service public class FooServiceImpl implements FooService { @Override public String doSomething(); { ... } } 许多其他类自动化此服务并致电Dosomething().例如: @Service public class BarServiceImpl implements BarService { @Autowired private FooService fooService; @Override public Strin
26 2023-01-20
编程技术问答社区
在Java中实例化匿名的内层类,有额外的接口实现
假设我有以下两个类/接口定义: public abstract class FooClass { public abstract void doFoo(); } 和 public interface BarInterface { public void doBar(); } 如果我想做一个扩展/实现两者的匿名内部类,我需要这样做: public abstract class BothClass extends FooClass implements BarInterface {} ... new BothClass() { public void doFoo() { System.out.println("Fooooooooo!!!!"); } public void doBar() { System.out.println("Baaaaaaaar!!!!"); } }.doB
6 2022-12-29
编程技术问答社区
如何自动生成实现接口的方法
phpstorm是否有一种方法可以自动生成给定类正在实现的接口所需的空方法? 说我们有一个带有3种方法的接口 - 定义实现此接口的新类时 - 某些选项自动生成容器以适用于所有必需的方法. 解决方案 从我的评论中:您可以尝试 alt + enter .这种常态显示了一个小的"对话",以使PHPDOC,功能等自动化. 其他解决方案 当然可以. 有3种方法: 按 Ctrl + I 在主菜单上,单击 Code --> Implement Methods 在代码编辑器上,按右键单击鼠标,然后单击 Generate --> Implement Methods 之后,您可以选择一种或一些方法,然后单击"确定".
26 2022-11-29
编程技术问答社区
Java接口--合同中到底有什么?
我知道并了解Java中接口的价值.您将代码到接口,然后可以更改实现,而无需使用接口更改任何代码.通常,"合同"一词用于接口.我理解的方式是界面定义应用程序和实施之间的"合同". 因此,当我创建实施时,我必须履行合同.我的问题是,我必须履行的合同到底是什么? 显然,至少您必须提供与接口相同的签名的方法.该代码不会否则不会编译.所有"合同"都需要吗?似乎应该还有更多. 例如,我已经阅读了文章,辩论测试对接口与测试特定实现的价值或同时进行.我认为对接口进行测试非常有价值,以便您知道哪些输入具有预期输出.在我看来,这也将是接口"合同"的一部分.接口的每个实现都应从相同的输入中产生相同的输出.显然,没有办法在守则中执行该合同,但是可以通过测试案例执行.我在这里思考我错了吗? 最后,实现的副作用呢?在这里,我主要是在谈论在实施中可能发生的任何持久性.假设我有一个实现,该实现将一些记录保存到DB时,它可以预先操作.这会以某种方式成为"合同"接口的一部分?如果是这样,您如何执行此
10 2022-11-29
编程技术问答社区
当抽象的超类包含一个工厂方法时,如何访问它的实现?
我有一个带有工厂的抽象超类,该工厂返回一个子类实例.是否可以使用仅在超类中实现的方法?例如,在以下代码中,是否可以删除Wind :: Act()? abstract class Element { final String action; // what it does String act() => action; // do it factory Element() { return new Wind(); } } class Wind implements Element { final action = "blows"; act() => action; // Why is this necessary? } void main() { print(new Element().act()); } 删除Wind :: Act()时,缺少它的错误.同样,当扩展而不是实现超类时,遗漏了子类实现不会导致错误.但是使用工厂方法,
12 2022-09-20
编程技术问答社区