是否有可能以某种方式在C#中实现此行为:publicinterfaceIReadOnly{DataValue{get;}}internalinterfaceIWritable:IReadOnly{DataValue{get;set;}}我希望能够向外部程序集公开一个只读接口(interface),但在内部使用一个可写接口(interface)(我也可以用不同的方式实现)。我知道我可以使用实现IReadOnly但添加setter的抽象类,但这迫使我从该类派生所有内部实现。 最佳答案 这不是问题:publicinterfaceIRead
我正在尝试在VB.NET中创建一个类,它继承了一个基本抽象类并实现了一个接口(interface)。该接口(interface)声明了一个名为Description的字符串属性。基类包含一个名为Description的字符串属性。主类继承基类并实现接口(interface)。基类中Description属性的存在满足接口(interface)要求。这在C#中工作正常,但在VB.NET中会导致问题。首先,这是一个有效的C#代码示例:publicinterfaceIFoo{stringDescription{get;set;}}publicabstractclassFooBase{publ
我正在尝试在VB.NET中创建一个类,它继承了一个基本抽象类并实现了一个接口(interface)。该接口(interface)声明了一个名为Description的字符串属性。基类包含一个名为Description的字符串属性。主类继承基类并实现接口(interface)。基类中Description属性的存在满足接口(interface)要求。这在C#中工作正常,但在VB.NET中会导致问题。首先,这是一个有效的C#代码示例:publicinterfaceIFoo{stringDescription{get;set;}}publicabstractclassFooBase{publ
谁能解释一下为什么C#接口(interface)不允许包含运算符?谢谢。 最佳答案 C#operatorshavetobestatic.根据定义,接口(interface)适用于实例。没有机制要求类型实现静态成员。编辑:从C#8.0开始,如您所见here,现在可以在接口(interface)中定义本地方法并在接口(interface)本身中实现它们,例如允许创建方法重载而无需实现也关心这些重载,当它们可能只是为必须实现的重载提供一个附加参数时。除此之外,您还可以在接口(interface)内定义运算符,但它们必须是静态的,因此必
谁能解释一下为什么C#接口(interface)不允许包含运算符?谢谢。 最佳答案 C#operatorshavetobestatic.根据定义,接口(interface)适用于实例。没有机制要求类型实现静态成员。编辑:从C#8.0开始,如您所见here,现在可以在接口(interface)中定义本地方法并在接口(interface)本身中实现它们,例如允许创建方法重载而无需实现也关心这些重载,当它们可能只是为必须实现的重载提供一个附加参数时。除此之外,您还可以在接口(interface)内定义运算符,但它们必须是静态的,因此必
问题很简单,在标题中问。C#4.0规范说:(§4.2.2)Theobjectclasstypeistheultimatebaseclassofallothertypes.EverytypeinC#directlyorindirectlyderivesfromtheobjectclasstype.EricLippertsays:Interfacetypes,notbeingclasses,arenotderivedfromobject.现实说:Typet=typeof(ICloneable).BaseType;Console.WriteLine(t==null);True那么规范是错误的
问题很简单,在标题中问。C#4.0规范说:(§4.2.2)Theobjectclasstypeistheultimatebaseclassofallothertypes.EverytypeinC#directlyorindirectlyderivesfromtheobjectclasstype.EricLippertsays:Interfacetypes,notbeingclasses,arenotderivedfromobject.现实说:Typet=typeof(ICloneable).BaseType;Console.WriteLine(t==null);True那么规范是错误的
注意:我知道这在实践中是一个糟糕的想法;我只是好奇CLR允许您做什么,目标是创建某种“在创建类后修改它”的预处理器。假设我有以下类,它是在另一个程序集中定义的,所以我无法更改它。classPerson{publicstringGreet()=>"Hello!";}我现在定义一个接口(interface)和一个方法,如下所示:interfaceIGreetable{stringGreet();}//...voidPrintGreeting(IGreetableg)=>Console.WriteLine(g.Greet());Person类没有显式实现IGreetable,但它可以在不对其
注意:我知道这在实践中是一个糟糕的想法;我只是好奇CLR允许您做什么,目标是创建某种“在创建类后修改它”的预处理器。假设我有以下类,它是在另一个程序集中定义的,所以我无法更改它。classPerson{publicstringGreet()=>"Hello!";}我现在定义一个接口(interface)和一个方法,如下所示:interfaceIGreetable{stringGreet();}//...voidPrintGreeting(IGreetableg)=>Console.WriteLine(g.Greet());Person类没有显式实现IGreetable,但它可以在不对其
这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Whycan'tC#interfacescontainfields?大家好JonSkeethasansweredtoaquestionthatUsingapropertyisbackedbyavariable.但接口(interface)中的属性在C#中是允许的。这是否意味着C#中的接口(interface)可以包含一个变量,以及如何处理属性支持的变量?提前致谢。