草庐IT

functional-interface

全部标签

c# - 如何创建具有可变参数/不同方法签名的方法接口(interface)?

我正在尝试创建一个通用类的接口(interface),但实现类可以有不同的参数。例如publicinterfaceIViewModel{//...voidResetReferences();}//andthen,inmyclassimplementations,somethinglikethis:publicclassLocationViewModel:IViewModel{publicvoidResetReferences(ListstateProvinces)//...}publicclassProductViewModel:IViewModel{publicvoidResetRe

c# - 实现接口(interface)的好处

在C#3.5中实现接口(interface)有什么好处? 最佳答案 您将能够将对象传递给需要接口(interface)作为参数的方法(或满足类型约束)。C#不支持“ducktyping”。仅仅通过编写接口(interface)定义的方法,对象不会自动与接口(interface)类型“兼容”:publicvoidPrintCollection(IEnumerablecollection){foreach(varxincollection)Console.WriteLine(x);}如果List没有实现IEnumerable接口(int

c# - 在 C# 中与 getter 和 setter 接口(interface)

正如我在这里阅读的http://msdn.microsoft.com/en-us/library/75e8y5dd%28v=VS.100%29.aspx有可能在接口(interface)中有get而不是set吗?或者如果我想在接口(interface)中使用getter和setter,我是否必须使用旧语法getVarsetVar只是因为新语法不适合接口(interface)语法?更新:如果我必须在接口(interface)中省略set,这是否意味着我不能强制类拥有setter,这违背了在这种情况下拥有接口(interface)的目的,因为我只能部分强制执行?

C#:通过显式指定接口(interface)来覆盖属性

在尝试覆盖ICollection.IsReadOnly的显式接口(interface)实现时来自Collection的属性(property)类,我遇到了一些文档,指出显式接口(interface)成员实现不能被覆盖,因为它们不能有诸如virtual之类的修饰符。或abstract.在MSDN他们甚至指定如何通过创建另一个由显式接口(interface)成员实现调用的抽象或虚拟成员来使显式接口(interface)成员实现可用于继承。到目前为止没有问题。但后来我想知道:为什么在C#中可以通过显式指定接口(interface)来覆盖任何显式实现的接口(interface)成员?例如,假设

c# - 不能为接口(interface)模拟传递构造函数参数

当我调试代码并阅读创建mockLessonplannerAFactory的行时,我收到错误:Constructorargumentscannotbepassedforinterfacemocks.varmockSchoolclassCodeService=newMock();varmockDateService=newMock();varmockLessonplannerAFactory=newMock(mockDateService.Object);varmockLessonplannerBFactory=newMock(mockDateService.Object);varserv

c# - 使用 Web API 的模型绑定(bind)接口(interface)属性

我有一个看起来像这样的命令:publicinterfaceICommand{//Justamarkerinterface}publicinterfaceIUserAware{GuidUserId{get;set;}}publicclassCreateSomething:ICommand,IUserAware{publicstringTitle{get;set;}publicGuidUserId{get;set;}}REST请求是:PUT/createHTTP/1.1UserId:7da6f9ee-2bfc-70b1-f93c-10c950c8f6b0//PossibleanAuthto

c# - 如何告诉 Entity Framework Function Import 存储过程返回的列不可为空?

我有一个类似于此的SQLServer存储过程:CREATEPROCEDURE[jp].[GetFoo]@GuidUNIQUEIDENTIFIERASSELECTCONVERT(BIT,(CASEWHEN[dbo].[GetBar](T.Col2)=3THEN1ELSE0END))IsGetBarCol2EqualToThreeFROM[dbo].[MyTable]TWHERET.Col1=@Guid当我在EF中执行函数导入/获取列信息时,列IsGetBarCol2EqualToThree的推断类型为Nullable.但是这个字段不可能为空,所以我希望它只是bool.有没有一种方法可以在

c# - 自动创建一个包装器来实现一个接口(interface)

我有一些不实现特定接口(interface)但在结构上符合该接口(interface)的类。interfaceIFoo{voidmethod();}classBar{//doesnotimplementIFoopublicvoidmethod(){...}}现在,我可以围绕那些简单地委托(delegate)给包装类的类编写一个包装器classBarWrapper:IFoo{Barbar=newBar();publicvoidmethod(){bar.method();}}但这是一项繁琐的工作。这些包装类可以以某种方式自动生成吗?像这样的东西:IFoofoo=CreateWrapper(

具有插件之间共享接口(interface)的 C# 插件架构

我将我的问题分为短版和长版,供手头时间不多的人使用。精简版:我需要一些具有提供者和消费者插件的系统的架构。提供者应该实现接口(interface)IProvider,消费者应该实现IConsumer。正在执行的应用程序应该只知道IProvider和IConsumer。消费者实现可以询问正在执行的程序集(通过ServiceProcessor)哪些提供者实现了InterfaceX并返回一个List。这些IProvider对象应该被转换为InterfaceX(在消费者中),以便能够将消费者Hook到InterfaceX定义的某些事件上。这将失败,因为执行程序集不知何故不知道此Interfac

c# - Visual Studio : Make debugger aware that a function doesn't cause "side effects"

我有一个对象,我必须通过监window口多次监视函数输出。问题是我每次执行步骤时都必须按刷新按钮,因为“此表达式会产生副作用,不会被计算”。有什么方法可以用[DoesNotCauseSideEffects]之类的东西标记一个函数,以便watch可以在我每次迈出一步时自动评估它吗?我在VS2008或2010中编写C#。编辑:该函数看起来像这样,并且如您所见,不会引起任何副作用。(x、y、z都是double)publicoverridestringToString(){return"{"+x.ToString(".00")+","+y.ToString(".00")+","+z.ToStr