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
嵌套类型I
是protected
。
这意味着I
对所有C
以及从C
派生的所有类都可见。例如,这可用于在 C
中创建 protected
实例方法,在其签名或返回类型中包含 I
。
注意:界面的默认可访问性不是public
,就像您声称的那样。接口的成员的默认可访问性是public
。那是另一回事。
接口本身的默认可访问性取决于接口本身是什么成员。如果接口是“外部”class
或 struct
的成员(如我上面的C
),它通常具有class
和struct
成员的默认可访问性,即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 访问器指定单独的访问修饰符吗?