草庐IT

fluent-interface

全部标签

c# - 如何在 C# 中自动实现接口(interface)?

以前在VisualStudio中,如果您声明了一个带有接口(interface)的类,您可以将光标放在接口(interface)上,右键单击它并选择实现接口(interface)。(Seehere对于VS2008的类似问题。)我已经开始从事一个项目,该项目定义了许多将与SimpleInjector一起使用的接口(interface)。现在,当我开始编写服务类时,我注意到ImplementInterface菜单选项不见了。如何像在VS2008中那样实现所有必要的方法stub?抱歉,如果这是重复的,但是,我无法在任何地方找到这个答案。编辑笔记-2018年8月17日多年来,这一直是一个热门问

c# - 委托(delegate)不只是简写接口(interface)吗?

假设我们有:interfaceFoo{boolFunc(intx);}classBar:Foo{boolFunc(intx){return(x>0);}}classBaz:Foo{boolFunc(intx){return(x现在我们可以将Bar和Baz作为Foos来回折腾,并调用它们的Func方法。委托(delegate)对此进行了一些简化:delegateboolFoo(intx);boolBar(intx){return(x0);}现在我们可以将Bar和Baz作为Foo委托(delegate)来回折腾了。除了缩短代码之外,委托(delegate)的真正好处是什么?

C# - 系统地添加接口(interface)是一种好习惯吗?

在我从事的项目中,我注意到每个实体类都有一个接口(interface)。似乎最初的动机是只向其他项目/解决方案公开接口(interface)。我发现这完全没用,而且我不明白为每个类创建接口(interface)有什么意义。顺便说一句,这些类没有任何方法,只有属性,它们没有实现相同的接口(interface)。我错了吗?或者这是一个好的做法?谢谢 最佳答案 我倾向于为几乎每个类创建一个接口(interface),主要是因为单元测试-如果您使用依赖注入(inject)并希望对依赖于所讨论类的类进行单元测试,那么标准方法是模拟有问题的类(

c# - 如何隐藏接口(interface)的某些成员

我想创建一个实现ICollection的自定义集合。但我不想公开ICollection的一些成员,例如Clear方法。如何实现? 最佳答案 您可以显式实现接口(interface)并隐藏实现:publicclassUrClass:ICollection{voidICollection.Clear(){...}}用户无法调用urClassInstance.Clear()直接,但他们可以调用((ICollection)urClassInstance).Clear()间接地像这样。 关于c#-

c# - 编程到接口(interface)。如何决定在哪里需要它?

我知道针对接口(interface)编程有助于松散耦合。但是,是否有一个指南可以解释什么时候最有效?例如,我有一个简单的网络应用程序,可以收集有关员工的数据、他们的培训计划、费用并计算他们当年的费用等。这是一个相当简单的应用程序,我当然可以使用一个界面,但想知道是否有会有什么用。我会为了使用它而使用它。人们总是会争辩说,随着应用程序变得越来越复杂并且我传递对象,传递类型(接口(interface))比传递实现更有意义。那么,我应该等待应用程序变得复杂,还是立即使用它?我想知道最好的做法可能是“这家伙做事过度了”。 最佳答案 对接口(

c# - 从现有数据库和 Fluent NHibernate 自动映射生成 C# 实体

我正在使用一个现有的数据库,该数据库使用了一些非常丑陋的约定。我想使用NHibernate,并且我认为我可以使用FluentNHibernate的自动映射约定来修复所有这些丑陋的数据库约定。我想避免手动编写所有实体类。(这就是LINQtoSQL和SubSonic的吸引力所在)是否可以根据我在FluentNHibernate中指定的数据库模式和映射生成我的C#实体?旁白:您知道NHibernate的设计器吗? 最佳答案 我想,这就是您想要的:NHibernate映射生成器。http://nmg.codeplex.com/

c# - Fluent nHibernate 自动映射属性为 nvarchar(max)

使用流畅的nhibernate和自动映射(nhibernate创建我的数据库模式),我如何让nhibernate根据以下类在数据库中创建nvarchar(max)列publicclassVirtualPage:BaseEntity{publicvirtualintParentId{get;set;}publicvirtualstringPageName{get;set;}publicvirtualstringTitle{get;set;}publicvirtualstringBody{get;set;}publicvirtualstringViewName{get;set;}publi

没有静态类型的 C# 接口(interface)

有没有办法按照这些思路做一些事情?interfaceIface{[anytype]Prop1{get;}[anytype]Prop2{get;}}classClass1:Iface{publicstringProp1{get;}publicintProp2{get;}}classClass2:Iface{publicintProp1{get;}publicbool?Prop2{get;}}我不关心属性的类型,我只需要属性可用。这不一定要用接口(interface)来实现,只是以它为例。 最佳答案 使界面通用:interfaceIfa

c# - 序列化接口(interface)

我正在尝试运行与此类似的代码:usingSystem;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Xml.Serialization;namespaceConsoleApplication1{[Serializable][XmlInclude(typeof(List))]publicclassClass1{privateIListmyArray;publicIListMyArray{get{returnmyArray;}set{myArray=value;}}}publicclassClass2{privatei

C# 和接口(interface) - 显式与隐式

在C#中,如果一个类具有接口(interface)的所有正确方法/签名,但没有显式实现它,例如:classfoo:IDoo{}类仍然可以转换为该接口(interface)吗? 最佳答案 鸭子类型(ducktyping)您所指的是“duck-typing”(以成语“长得像鸭子类型(ducktyping),叫起来像鸭子类型(ducktyping),那一定是鸭子类型(ducktyping)”命名)。一旦您实现了相关成员(正如您所描述的),使用鸭子类型(ducktyping)接口(interface)实现是隐式的,但是.NET目前对此没有任