草庐IT

interface-design

全部标签

c# - 将 setter 添加到派生接口(interface)

是否有可能以某种方式在C#中实现此行为:publicinterfaceIReadOnly{DataValue{get;}}internalinterfaceIWritable:IReadOnly{DataValue{get;set;}}我希望能够向外部程序集公开一个只读接口(interface),但在内部使用一个可写接口(interface)(我也可以用不同的方式实现)。我知道我可以使用实现IReadOnly但添加setter的抽象类,但这迫使我从该类派生所有内部实现。 最佳答案 这不是问题:publicinterfaceIRead

c# - VB.NET类继承一个基类并实现一个接口(interface)问题(在C#中工作)

我正在尝试在VB.NET中创建一个类,它继承了一个基本抽象类并实现了一个接口(interface)。该接口(interface)声明了一个名为Description的字符串属性。基类包含一个名为Description的字符串属性。主类继承基类并实现接口(interface)。基类中Description属性的存在满足接口(interface)要求。这在C#中工作正常,但在VB.NET中会导致问题。首先,这是一个有效的C#代码示例:publicinterfaceIFoo{stringDescription{get;set;}}publicabstractclassFooBase{publ

c# - VB.NET类继承一个基类并实现一个接口(interface)问题(在C#中工作)

我正在尝试在VB.NET中创建一个类,它继承了一个基本抽象类并实现了一个接口(interface)。该接口(interface)声明了一个名为Description的字符串属性。基类包含一个名为Description的字符串属性。主类继承基类并实现接口(interface)。基类中Description属性的存在满足接口(interface)要求。这在C#中工作正常,但在VB.NET中会导致问题。首先,这是一个有效的C#代码示例:publicinterfaceIFoo{stringDescription{get;set;}}publicabstractclassFooBase{publ

C# 接口(interface)不能包含运算符

谁能解释一下为什么C#接口(interface)不允许包含运算符?谢谢。 最佳答案 C#operatorshavetobestatic.根据定义,接口(interface)适用于实例。没有机制要求类型实现静态成员。编辑:从C#8.0开始,如您所见here,现在可以在接口(interface)中定义本地方法并在接口(interface)本身中实现它们,例如允许创建方法重载而无需实现也关心这些​​重载,当它们可能只是为必须实现的重载提供一个附加参数时。除此之外,您还可以在接口(interface)内定义运算符,但它们必须是静态的,因此必

C# 接口(interface)不能包含运算符

谁能解释一下为什么C#接口(interface)不允许包含运算符?谢谢。 最佳答案 C#operatorshavetobestatic.根据定义,接口(interface)适用于实例。没有机制要求类型实现静态成员。编辑:从C#8.0开始,如您所见here,现在可以在接口(interface)中定义本地方法并在接口(interface)本身中实现它们,例如允许创建方法重载而无需实现也关心这些​​重载,当它们可能只是为必须实现的重载提供一个附加参数时。除此之外,您还可以在接口(interface)内定义运算符,但它们必须是静态的,因此必

c# - 接口(interface)是否派生自 System.Object? C# 规范说是,埃里克说不,现实说不

问题很简单,在标题中问。C#4.0规范说:(§4.2.2)Theobjectclasstypeistheultimatebaseclassofallothertypes.EverytypeinC#directlyorindirectlyderivesfromtheobjectclasstype.EricLippertsays:Interfacetypes,notbeingclasses,arenotderivedfromobject.现实说:Typet=typeof(ICloneable).BaseType;Console.WriteLine(t==null);True那么规范是错误的

c# - 接口(interface)是否派生自 System.Object? C# 规范说是,埃里克说不,现实说不

问题很简单,在标题中问。C#4.0规范说:(§4.2.2)Theobjectclasstypeistheultimatebaseclassofallothertypes.EverytypeinC#directlyorindirectlyderivesfromtheobjectclasstype.EricLippertsays:Interfacetypes,notbeingclasses,arenotderivedfromobject.现实说:Typet=typeof(ICloneable).BaseType;Console.WriteLine(t==null);True那么规范是错误的

c# - 传递可以 "fit"接口(interface)的 C# 参数,但实际上并不实现它

注意:我知道这在实践中是一个糟糕的想法;我只是好奇CLR允许您做什么,目标是创建某种“在创建类后修改它”的预处理器。假设我有以下类,它是在另一个程序集中定义的,所以我无法更改它。classPerson{publicstringGreet()=>"Hello!";}我现在定义一个接口(interface)和一个方法,如下所示:interfaceIGreetable{stringGreet();}//...voidPrintGreeting(IGreetableg)=>Console.WriteLine(g.Greet());Person类没有显式实现IGreetable,但它可以在不对其

c# - 传递可以 "fit"接口(interface)的 C# 参数,但实际上并不实现它

注意:我知道这在实践中是一个糟糕的想法;我只是好奇CLR允许您做什么,目标是创建某种“在创建类后修改它”的预处理器。假设我有以下类,它是在另一个程序集中定义的,所以我无法更改它。classPerson{publicstringGreet()=>"Hello!";}我现在定义一个接口(interface)和一个方法,如下所示:interfaceIGreetable{stringGreet();}//...voidPrintGreeting(IGreetableg)=>Console.WriteLine(g.Greet());Person类没有显式实现IGreetable,但它可以在不对其

c# - 接口(interface)可以包含变量吗?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Whycan'tC#interfacescontainfields?大家好JonSkeethasansweredtoaquestionthatUsingapropertyisbackedbyavariable.但接口(interface)中的属性在C#中是允许的。这是否意味着C#中的接口(interface)可以包含一个变量,以及如何处理属性支持的变量?提前致谢。