我发现了一些我不太懂的东西.
我有一个项目,我有一个内部接口.实现该接口的类也是内部的.在接口的实现中,我制作了我实现的所有成员,内部.我没有做一个明确的实现.
我有两个接口和两个类来实现这些工作正常的接口.
它看起来像这样:
internal interface IA
{
void X();
}
Run Code Online (Sandbox Code Playgroud)
然后
internal class CA : IA
{
internal void X()
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
这适用于前面提到的两个类.但是当我尝试用另一个接口和类做它时,它不起作用.事实上,对于上面的例子,我得到错误:
'WindowsFormsApplication1.CA'没有实现接口成员'WindowsFormsApplication1.IA.X()'.'WindowsFormsApplication1.CA.X()'无法实现接口成员,因为它不是公共的.
我意识到我可以将方法公开或者做一个显式的实现(并省略内部和公共修饰符),但我只是混淆为什么它适用于它使用的两个类,但我似乎无法复制它在其他地方.
对代码进行一些屠杀(因为它是保密的),这是我项目中实际工作的代码之一.
internal interface IScanner
{
void SetHardware(Hardware hardware);
void Start();
void PauseScan();
void ResumeScan();
void Stop();
bool InScan { get; }
event ScanCompleteHandler ScanComplete;
}
Run Code Online (Sandbox Code Playgroud)
然后我上课了:
internal class MyScanner : IScanner
{
internal void SetHardware(Hardware hardware)
{
...
}
internal void Start()
{
...
}
internal void Stop()
{
...
}
internal …
Run Code Online (Sandbox Code Playgroud) and
并or
返回他们评估的最后一个元素,但为什么不是Python的内置函数any
?
我的意思是这样实现自己很容易,但我仍然想知道为什么.
def any(l):
for x in l:
if x:
return x
return x
Run Code Online (Sandbox Code Playgroud)
编辑:
要添加到下面的答案,这里是你们强大的皇帝在同一个邮件列表中的实际引用:
是否总是返回True和False或第一个faling/passing元素?我在博客之前也玩过它,并且意识到最终的情况(如果序列是空的或者所有元素都没有通过测试)永远不能令人满意:如果参数是可迭代的bool,那么选择None会感觉很奇怪,并且如果参数是非bool对象的可迭代,那么选择False会感觉很奇怪.
Guido van Rossum(主页:http://www.python.org/~guido/)
我是一个非常新的C#和.Net开发人员.我最近使用C#创建了一个MMC管理单元,并对它的执行起来感到满意,特别是在听到组织中的其他一些开发人员讲述C++中的难度之后.
我几乎完成了整个项目,并将"public"关键字的每个实例都设置为"internal",除非运行时需要运行snapin.如果您通常将课程和方法公开或内部化,您对此有何感受?
我是一名使用Android的新手.已在该位置创建文件data/data/myapp/files/hello.txt
; 这个文件的内容是"你好".我如何阅读文件的内容?
在C#中,您可以将类标记internal
为只能从同一个包中访问它.Java中有类似的东西吗?
我的C#解决方案中有3个项目.
签名具有公共和内部接口.它也有
[assembly: InternalsVisibleTo("Structures")]
[assembly: InternalsVisibleTo("Tests")]
Run Code Online (Sandbox Code Playgroud)
在AssemblyInfo.cs中.
结构有公共和内部类和
[assembly: InternalsVisibleTo("Tests")]
Run Code Online (Sandbox Code Playgroud)
在AssemblyInfo.cs中.
测试有下一个来源:
<packages>
<package id="Moq" version="4.2.1409.1722" targetFramework="net45" />
<package id="NUnit" version="2.6.4" targetFramework="net45" />
<package id="NUnitTestAdapter" version="1.2" targetFramework="net45" />
</packages>
Run Code Online (Sandbox Code Playgroud)
在packages.config中作为NuGet包.
我从Signatures和Structures的内部类中为内部接口编写了一些单元测试.运行,并有下一个结果:异常:
类型Signatures.InterfaceX对DynamicProxy不可见.无法为无法访问的类型创建代理.将类型设置为public或internal,并使用[assembly:InternalsVisibleTo(InternalsVisible.ToDynamicProxyGenAssembly2)]属性标记程序集.
似乎合乎逻辑.我将[assembly:InternalsVisibleTo("InternalsVisible.DynamicProxyGenAssembly2")]添加到了Signatures and Structures项目的装配信息中.运行,并有下一个结果:异常:
从程序集"DynamicProxyGenAssembly2,Version = 0.0.0.0,Culture = neutral,PublicKeyToken = null"中键入"Castle.Proxies.IReminiscenceableDataTableProxy"正在尝试实现无法访问的接口.
这是有帮助的,但没有.仅更改异常消息.
如何解决我的问题?
我正在开发的R包需要几个R数据对象,例如预先计算的模型和参数.
目前,我将每个对象放在包的'data'目录中的各个.RData文件中.使用包时,用户可以使用"数据"功能将这些对象附加到其环境中.
我想要的行为是,在加载包时,数据对象会自动附加到内部包环境,而用户无法直接访问.
我的理解是将'sysdata.rda'文件放在包含当前在'data'中的对象的包的'R'目录中将给出我想要的结果.但是,有没有办法做到这一点,以便我可以将每个对象放在一个单独的文件而不是组合在一起?
我想将内部存储上的文件保存到特定文件夹中.我的代码是:
File mediaDir = new File("media");
if (!mediaDir.exists()){
mediaDir.createNewFile();
mediaDir.mkdir();
}
File f = new File(getLocalPath());
f.createNewFile();
FileOutputStream fos = new FileOutputStream(f);
fos.write(data);
fos.close();
Run Code Online (Sandbox Code Playgroud)
getLocalPath
返回,/data/data/myPackage/files/media/qmhUZU.jpg
但是当我想创建媒体文件夹时,我得到异常"java.io.IOException:只读文件系统".有任何想法如何在文件夹媒体中的内部手机存储上写我的文件?谢谢.
我正在尝试对具有许多内部函数的类进行单元测试.这些显然也需要测试,但我的测试项目是分开的,主要是因为它涵盖了许多小的相关项目.到目前为止我所拥有的是:
FieldInfo[] _fields =
typeof(ButtonedForm.TitleButton).GetFields(
BindingFlags.NonPublic | BindingFlags.Instance |
BindingFlags.DeclaredOnly);
Console.WriteLine("{0} fields:", _fields.Length);
foreach (FieldInfo fi in _fields)
{
Console.WriteLine(fi.Name);
}
Run Code Online (Sandbox Code Playgroud)
这很好地吐出了所有私人成员,但仍然没有显示内部.我知道这是可能的,因为当我搞乱Visual Studio可以生成的自动生成的测试时,它询问了如何处理显示Test项目的内部结构.好吧,现在我正在使用NUnit并且非常喜欢它,但是我怎么能用它来实现同样的目的呢?
我正在尝试理解C#中的内部访问修饰符.我似乎无法理解装配是什么,以及我的程序的哪个部分保存在该装配中.我试图使它变得只有以下命名空间中的对象可访问变量:
namespace Engine.Entity
Run Code Online (Sandbox Code Playgroud)
有问题的变量是在该命名空间内的类中定义的,所以我假设如果我将其设置为内部,则只有该命名空间内的对象才能访问它.我看到程序集和名称空间是一体的,我不认为这是正确的.