Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#隐藏接口成员_C#_.net - Fatal编程技术网

C#隐藏接口成员

C#隐藏接口成员,c#,.net,C#,.net,考虑以下代码: interface IA { string text {get;} } interface IB: IA { int number {get;} } class MyType: IB { {...} } 我真的不想在MyType中实现IA中的属性“text”。。有什么可能的把戏吗?例如,IB隐藏属性 谢谢是的,您可以通过如下方式显式实现它,使其成为伪私有: class MyType: IB { string IA.text { get { throw

考虑以下代码:

interface IA
{
   string text {get;}
}
interface IB: IA
{
   int number {get;}
}
class MyType: IB
{
   {...}
}
我真的不想在MyType中实现IA中的属性“text”。。有什么可能的把戏吗?例如,IB隐藏属性


谢谢

是的,您可以通过如下方式显式实现它,使其成为伪私有:

class MyType: IB
{
    string IA.text { get { throw new NotSupportedException(); } }
}
但是,真的吗?违反你自己的合同就像,嗯。。。违反了,伙计


我想,使用它玩得开心吧?

是的,通过显式地实现它,您可以使它成为伪私有的:

class MyType: IB
{
    string IA.text { get { throw new NotSupportedException(); } }
}
但是,真的吗?违反你自己的合同就像,嗯。。。违反了,伙计


我想,使用它玩得开心吧?

如果你不希望它有有效的接口,为什么要用
IA
扩展
IB
?接口是一个合同,没有办法绕过它。你需要的所有答案都已经提供了。基本上,您不能也不应该在不遵守合同的情况下实现类型。没有必要大喊大叫。这不是一个离谱的问题。
IB
是否继承
IA
可能不是他的选择
IB
可能是第三方产品,甚至是BCL的一部分。他想要界面的一些行为,甚至是大部分行为,只是不是全部
IList
只是BCL中的一个例子,接口并不总是完全实现的。也许这是界面的问题,但它就是它的本来面目。@Anthony,从一般意义上讲,这并不离谱,但从技术意义上讲,这是离谱的。如果
IB
实现了
IA
,并且
MyType
实现了
IB
,那么
MyType
实现了
IA
,这是一个必然的结论。除了实现user791928的答案之外,你完全无能为力。如果你不想让
IA
拥有有效的接口,为什么你要用
IB
扩展它呢?接口是一个契约,没有办法绕过它。你需要的所有答案都已经提供了。基本上,您不能也不应该在不遵守合同的情况下实现类型。没有必要大喊大叫。这不是一个离谱的问题。
IB
是否继承
IA
可能不是他的选择
IB
可能是第三方产品,甚至是BCL的一部分。他想要界面的一些行为,甚至是大部分行为,只是不是全部
IList
只是BCL中的一个例子,接口并不总是完全实现的。也许这是界面的问题,但它就是它的本来面目。@Anthony,从一般意义上讲,这并不离谱,但从技术意义上讲,这是离谱的。如果
IB
实现了
IA
,并且
MyType
实现了
IB
,那么
MyType
实现了
IA
,这是一个必然的结论。除了实现user791928的答案之外,你完全无能为力。如果你在上一条语句的末尾加上“、man”,我会给你一个+1。这就是实现属性。。实现只是抛出了一个异常。我不想在MyTypes中写任何与IA相关的东西这是正确的答案,但你永远不应该这样做的想法还不够强调,永远都不可能有一点强烈。安东尼·佩格拉姆:你知道吗,让纳波做这件事,让我们确保我们自己永远不会做这件事。这够稀罕吗?=)如果在上一条语句的末尾加上“,”man“,我会给你一个+1。这是在实现属性。。实现只是抛出了一个异常。我不想在MyTypes中写任何与IA相关的东西这是正确的答案,但你永远不应该这样做的想法还不够强调,永远都不可能有一点强烈。安东尼·佩格拉姆:你知道吗,让纳波做这件事,让我们确保我们自己永远不会做这件事。这够稀罕吗?=)