Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.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_Asp.net Mvc 4_C# 4.0 - Fatal编程技术网

C# 可以保护来自其他程序集的实现接口吗?

C# 可以保护来自其他程序集的实现接口吗?,c#,.net,asp.net-mvc-4,c#-4.0,C#,.net,Asp.net Mvc 4,C# 4.0,我正在实现接口,该接口位于其他程序集中。我已添加程序集引用和名称空间,但无法访问它?我想在我的类中实现它,当然接口和类在不同的程序集中。我收到编译时错误“由于保护级别而无法访问…” 在我看来,这似乎是错误的。我不能访问此界面而不将其公开 代码: 命名空间中不能有任何标记为受保护的。只能使用内部和公共 只有在其他人没有意义的情况下才有可能做到这些。正如O.R.Mapper已经说过的,只有当它们已经是类的一部分时,这才有意义 如果您编写此代码: protected interface IInterf

我正在实现接口,该接口位于其他程序集中。我已添加程序集引用和名称空间,但无法访问它?我想在我的类中实现它,当然接口和类在不同的程序集中。我收到编译时错误“由于保护级别而无法访问…”

在我看来,这似乎是错误的。我不能访问此
界面
而不将其公开

代码:


命名空间中不能有任何标记为
受保护的
。只能使用
内部
公共

只有在其他人没有意义的情况下才有可能做到这些。正如O.R.Mapper已经说过的,只有当它们已经是类的一部分时,这才有意义

如果您编写此代码:

protected interface IInterface
{
}
它给出了编译时的错误:

命名空间中定义的元素不能显式声明为private、protected或protected internal

这并不编译:

internal interface IInterface
{
}
它将使接口仅在程序集中可用,除非通过属性使其可用

最新示例中的代码:

interface IInterface
{
}

标记接口
内部
,这是类、接口等的默认值,但对于接口,这意味着它们仅在程序集中可用,如前所述。

如果接口受
保护
,则它必须嵌套在另一个类中<该类中的code>protected表示仅在该类内或该类的任何子类内授予访问权限。您是从嵌套有问题的接口的类派生出来的吗?但是,您显示的接口不是
受保护的
…是
受保护的
还是
内部的
?如果您需要在其他程序集中实现它,可能
public
对您有好处。您正在显示的界面仍然没有受到
保护,如您的问题标题所示。向我们展示你所拥有的东西的实际结构-足够让我们重现你的结果。我认为这并不能回答问题。更像是。。。它故意忽略并重新定义问题的一部分。OP直接在命名空间中显示接口,因此它可能是
内部
,而不是
受保护的
InternalsVisibleTo
是一个很好的补充,因为它试图回答问题。@PatrickHofman-这是一个打字错误,但它也表明OP没有发布他们的真实代码,这通常是无用的。@PatrickHofman:也许我们在回答问题时有不同的方法。我倾向于等待尽可能长的时间(直到问题已经足够精炼,能够针对手头的特定问题写得很好),然后再回答,从而“总结思路”。在我看来,这样做的好处是,OP首先会自动习惯于编写更好的问题,反过来,整个问答组合将更容易阅读,因此对未来的访问者更有用。在那之前,评论更合适。@O.R.Mapper:谢谢你的回复。我也希望它清楚,但我经常在代码示例中看到拼写错误,其中实际问题很清楚,不需要代码来支持。我倾向于真诚地回答他们,OP确实手工编写了代码示例。
interface IInterface
{
}