问题标签 [interface-implementation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
3094 浏览

undo - 在事务数据库中撤消

我不知道如何使用事务数据库实现用户友好界面的撤消属性。

一方面,建议用户具有多级(无限)撤消的可能性,如答案中所述。可能有助于解决此问题的模式是MementoCommand

然而,使用包含触发器、不断增长的序列号和不可逆过程的复杂数据库,很难想象撤消操作如何在事务边界之外的不同点工作。换句话说,撤消到最后一次提交的事务只是一个回滚,但是怎么可能回到不同的时刻呢?

更新(基于到目前为止的答案):我不一定希望在修改已经提交时撤消工作,我会专注于具有开放事务的正在运行的应用程序。每当用户单击保存时,这意味着提交,但在保存之前 - 在同一事务期间 - 撤消应该起作用。我知道使用数据库作为持久层只是一个实现细节,用户不应该为此烦恼。但是,如果我们认为“数据库中的撤消和 GUI 中的撤消概念是根本不同的东西”并且我们不对数据库使用撤消,那么无限撤消只是一个流行词。我知道“回滚是......不是用户撤消”。

那么如何在同一个事务中实现“任何更改导致的级联效果”的客户端级撤消呢?

0 投票
3 回答
3943 浏览

c# - C#继承的受保护方法实现接口

我在 C# 中有这个类/接口定义

现在我想创建一个从 FooBase 派生的类 Foo1 实现 IBar:

编译器将继承的受保护方法作为接口的可公开访问实现是否存在某种类声明魔法?

当然,一个 Foo1 方法

作品。我只是好奇是否有捷径;)

省略此方法会导致编译器错误:Foo1 未实现接口成员 IBar.Bar()。FooBase.Bar() 是静态的,不是公共的,或者返回类型错误。

说明:我将代码继承(类层次结构)和功能实现(接口)分开。因此,对于实现相同接口的类,访问共享(继承)代码非常方便。

0 投票
6 回答
41273 浏览

c# - 如何快速找到接口方法的实现?

有没有一种快速的方法可以找到接口的方法/属性/等的所有实现,而不是引用?这是一些示例代码:

我想在查看 SomeOtherClass.TestMethod() 时快速到达 SomeClass.GetInt()。如果我右键单击 _someClass.GetInt() 并单击“转到定义”,它会将我带到界面。如果我单击“查找所有引用”,我可能会看到所有用途的列表……而不仅仅是实现 GetInt() 方法的类。

有没有更快的方法找到这个?其他开发者有什么建议吗?我们对大部分依赖项都使用 DI,这意味着跟踪深度嵌套的代码需要很长时间

0 投票
4 回答
465 浏览

c# - 没有反射地调用方法声明

我有一个基类(订单)和一组子类(产品订单、特殊订单、零件订单等)。

这些子类中只有一些实现了具有单个方法声明(object getcustdetails())的特定接口(ITrackingCustomer)。

作为我的解决方案的一部分,我所有的订单都在一个中心位置处理,即任何 crud 方法都通过一个中心层。在这个中心层中,我想做以下事情:

如果订单是 ITrackingCustomer 类型

然后调用方法 getcustdetails()

我使用以下代码进行此工作:

我对使用 isassignablefrom 的第一部分感到满意​​,但想对第二部分使用性能强度较低的方法(即使用调用的反射)。

我的问题是:

有没有更有效的方法来做到这一点,因为我已经读到使用调用命令代价高昂。

0 投票
2 回答
26517 浏览

java - 如何将 ArrayList 传递给将集合作为输入的方法

我想将一些ArrayList<Integer>X传递a(Collection<Integer> someCol)Collection<Integer>作为输入的方法。

我怎样才能做到这一点?我认为 ArrayList 是一个 Collection ,因此我应该能够“做到这一点”,但似乎 Collection 是一个接口,而 ArrayList 实现了这个接口。我能做些什么来完成这项工作......如果你理解这个理论,这也将帮助我,可能还有很多其他人。

谢谢

0 投票
2 回答
1654 浏览

c# - 错误:列表没有 'System.Collections.Generic.IEnumerable 的匹配

如何用列表实现接口成员“f”?

错误 1“ClassLibrary1.C”未实现接口成员“ClassLibrary1.If”。“ClassLibrary1.Cf”无法实现“ClassLibrary1.If”,因为它没有匹配的返回类型“System.Collections.Generic.IEnumerable”。c:\users\admin\documents\visual studio 2010\Projects\ClassLibrary1\Class1.cs

0 投票
3 回答
6591 浏览

.net - 如何使用 ConcurrentDictionary、INotifyCollectionChanged、INotifyPropertyChanged 创建自定义可观察集合

我正在尝试创建一个 ObservableConcurrentDictionary。该对象将在多线程应用程序中使用,它的数据用于通过控件的 ItemsSource 属性填充控件。

这是我提出的实现:

不幸的是,该解决方案没有按预期工作 - 事实上,它根本不起作用。关于我做错了什么或是否存在任何更好的解决方案的任何想法?

请注意我不能使用 ObservableCollection,因此我必须编写自己的 Observable 集合。

编辑:工作版本如下。希望这可以帮助其他有类似问题的人。

0 投票
6 回答
21706 浏览

c# - 允许实现多少个接口?

在 C# 中:

一个类可以同时实现多少个接口?

N有限制吗?

别担心我不想实现或维护这样的对象。我只是想知道是否有限制。

0 投票
5 回答
31458 浏览

c# - 所有数组在 C# 中都实现了哪些接口?

作为一个新的 .NET 3.5 程序员,我开始学习 LINQ,我发现了一些我以前没有注意到的非常基本的东西:

这本书声称每个数组都实现IEnumerable<T>了(显然,否则我们不能使用 LINQ 到数组上的对象......)。当我看到这个时,我想我从来没有真正想过这个问题,我问自己所有数组还实现了什么——所以我 System.Array使用对象浏览器进行了检查(因为它是 CLR 中每个数组的基类),并且,令我惊讶的是,它没有实现IEnumerable<T>

所以我的问题是:定义在哪里?我的意思是,我怎样才能准确地知道每个数组实现了哪些接口?

0 投票
4 回答
5136 浏览

c# - 实现定义相同方法的两个接口的类

现在当我们在 Main() 方法中创建一个类 ab 的对象时,将调用哪个接口方法,请解释一下。