C# 可以修改MVC匿名类型的访问修饰符吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C# 可以修改MVC匿名类型的访问修饰符吗相关的知识,希望对你有一定的参考价值。

案例为:var book=newnumOne=1,onmTwo=2,bookes=books;
要在别的程序集中访问,真么办

因为匿名类型的修饰符为internal

匿名类型、dynamic类型都会被编译器生成一个internal修饰的类,因此,你只能在程序及内部使用匿名类型或者dynamic。

但是,C#4.0推出的ExpandoObject是可以跨程序集的,使用方法如下:

dynamic book = new ExpandoObject();
book.numOne = 1;
book.numTwo = 2;
book.Books = new ArrayList();
参考技术A internal只能在本程序集访问,要么你改成public

在 C# 中,我们可以对接口使用受保护的访问修饰符吗?

【中文标题】在 C# 中,我们可以对接口使用受保护的访问修饰符吗?【英文标题】:In C# can we ever use protected access modifier for an interface? 【发布时间】:2015-12-25 16:22:30 【问题描述】:

接口的默认访问修饰符是公共的。然而,

【问题讨论】:

你是指接口的成员,还是接口本身? 已编辑 接口的所有声明成员始终是公共的。如果接口嵌套在非静态、非密封的外部class 中,则接口本身的可访问性可以是protected 据我记忆,您不能为接口成员指定访问修饰符。 看看这个:***.com/questions/516148/… 当然,您可以声明一个受保护的嵌套接口。为什么你会做这样的事情很难猜到。 【参考方案1】:

在这个例子中:

class C

  protected interface I
  
  

嵌套类型Iprotected

这意味着I 对所有C 以及从C 派生的所有类都可见。例如,这可用于在 C 中创建 protected 实例方法,在其签名或返回类型中包含 I

注意:界面的默认可访问性不是public,就像您声称的那样。接口的成员的默认可访问性是public。那是另一回事。

接口本身的默认可访问性取决于接口本身是什么成员。如果接口是“外部”classstruct 的成员(如我上面的C),它通常具有classstruct 成员的默认可访问性,即private。如果接口是namespace(可能是全局命名空间)的直接成员,则默认可访问性是所有非嵌套类型的通常默认值,即internal

【讨论】:

【参考方案2】:

您可以更改此可访问性。

查看此页面:https://msdn.microsoft.com/en-us/library/ms173121.aspx。

据说“直接在命名空间中声明的接口可以声明为公共的或内部的,就像类和结构一样,接口默认为内部访问。”

请注意,正如您在此链接中看到的那样,https://msdn.microsoft.com/en-us/library/ba0a1yw2.aspx 成员默认是公开的,无法修改。

【讨论】:

该页面讨论的是成员的可访问性,而不是界面本身。 这个link 谈论接口及其成员。

以上是关于C# 可以修改MVC匿名类型的访问修饰符吗的主要内容,如果未能解决你的问题,请参考以下文章

可以为属性的 get 和 set 访问器指定单独的访问修饰符吗?

Objective-C:你在你的代码中使用@private 可见性/访问修饰符吗?

C#中4个访问修饰符(随笔)

C#访问修饰符

C#中的默认访问修饰符

C# 基础 访问修饰符ref与out标志枚举等等