C#中的访问修饰符internal
和有效private
访问修饰符有什么区别?
我们的一个项目中有很多代码如下所示:
internal static class Extensions
{
public static string AddFoo(this string s)
{
if (!string.IsNullOrEmpty(s)) return s + "Foo";
return "Foo";
}
}
Run Code Online (Sandbox Code Playgroud)
有没有明确的理由去做"除了以后更容易公开这种类型?"
我怀疑它只在非常奇怪的边缘情况下(Silverlight中的反射)或根本不重要.
Git索引究竟包含什么,以及我可以使用什么命令来查看索引的内容?
更新
谢谢你的所有答案.我知道索引充当临时区域,提交的内容是索引而不是工作树.我只是对索引对象的内容感到好奇.我想它可能是文件名/目录名列表,SHA-1对,也许是一种虚拟树?
在Git术语中,是否有任何可用于列出索引内容的管道命令?
如何访问程序集的内部类?假设我想访问System.ComponentModel.Design.DesignerHost.这里的DesignerHost是一个内部密封的类.
如何编写代码来加载程序集和类型?
好的,所以这可能是一个有点愚蠢的问题,肯定有明显的答案,但我很好奇,如果我错过了任何细微之处.
public
在internal
类中internal
声明的成员与在类中声明的成员之间的可见性/可用性方面是否有任何区别internal
?
即之间
internal class Foo
{
public void Bar()
{
}
}
Run Code Online (Sandbox Code Playgroud)
和
internal class Foo
{
internal void Bar()
{
}
}
Run Code Online (Sandbox Code Playgroud)
如果您将方法声明为public
and virtual
,然后在派生类中对其进行覆盖,则public
使用此修饰符的原因很明显.然而,这是唯一的情况......我错过了别的什么吗?
我想写一个类库,它为我创建一个复杂的对象,但应该尽可能少地暴露.我希望它被包含到其他项目中,我只有一个调用这个库,例如返回一个内部创建的类的对象.我不想让其他人明确地创建这些对象,但我仍然想为这个类库创建一个测试项目.
例如:
var result = Manager.Instance.Create(definition)
Run Code Online (Sandbox Code Playgroud)
这应该是对类库的唯一访问.
基于definition参数,它使用不同的子类来创建请求的实例并相应地设置其属性.因此,我想通过测试以某种方式确保整个创建过程运行良好.但是因为我也不想暴露结果对象的非常少的内部属性,所以我不能仅使用这种公共访问方法进行测试,因为我没有任何属性可以断言.
我知道你不应该测试内部机制,它通常是糟糕的设计,我也正在阅读这篇文章,但是没有任何方法可以创建一个库加单元测试项目,也许之后限制访问这个类?用包装纸什么的?
使用jQuery,您可以使用.bind()
事件处理程序帮助程序函数或其中一个事件将函数绑定到DOM对象上触发的事件.
jQuery必须以某种方式在内部存储它,我想知道是否有可能给定一个DOM对象,找出哪些事件已绑定到该对象,并访问这些函数等.所需的返回结果可能如下所示:
{
click: [function1, function2],
change: [function3],
blur: [function4, function5, function6]
}
Run Code Online (Sandbox Code Playgroud) 有没有办法禁用javac 1.6.0_22的限制,阻止我使用JRE内部类sun.awt.event.*
?
我不是在寻找:
我只想知道它是否可能,如果是,那么如何.
我有一个类库,有几个名称空间只包含内部类型.
但是,在应用程序项目中使用类库时,名称空间显示在intellisense中,但当然它们是空的.在其他项目中使用intellisense时,有什么方法可以完全隐藏命名空间吗?
我也试图应用于EditorBrowsableAttribute
所有内部类,但我想做的是将其应用于命名空间,这当然是不可能的.
或者,如果我足够关心这个,我必须将类型移动到包含公共类型的命名空间中的唯一选择?
我真的不明白.
如果基类是抽象的并且仅用于为程序集中定义的公共子类提供公共功能,为什么不将它声明为内部?
我不希望抽象类对程序集外部的代码可见.我不希望外部代码知道它.
internal ×10
c# ×7
class ×2
public ×2
.net ×1
events ×1
git ×1
hide ×1
inheritance ×1
intellisense ×1
java ×1
javac ×1
jquery ×1
namespaces ×1
private ×1
reflection ×1
scope ×1
storage ×1
unit-testing ×1
wrapper ×1