标签: internal

C#内部接口与内部实现

我发现了一些我不太懂的东西.

我有一个项目,我有一个内部接口.实现该接口的类也是内部的.在接口的实现中,我制作了我实现的所有成员,内部.我没有做一个明确的实现.

我有两个接口和两个类来实现这些工作正常的接口.

它看起来像这样:

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)

c# interface internal

43
推荐指数
3
解决办法
4万
查看次数

为什么python`any`返回bool而不是值?

andor返回他们评估的最后一个元素,但为什么不是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/)

python function internal

43
推荐指数
4
解决办法
8079
查看次数

我应该默认使用内部或公共可见性吗?

我是一个非常新的C#和.Net开发人员.我最近使用C#创建了一个MMC管理单元,并对它的执行起来感到满意,特别是在听到组织中的其他一些开发人员讲述C++中的难度之后.

我几乎完成了整个项目,并将"public"关键字的每个实例都设置为"internal",除非运行时需要运行snapin.如果您通常将课程和方法公开或内部化,您对此有何感受?

.net c# public internal

41
推荐指数
3
解决办法
1万
查看次数

如何从内部存储 - Android应用程序中读取文件内容

我是一名使用Android的新手.已在该位置创建文件data/data/myapp/files/hello.txt; 这个文件的内容是"你好".我如何阅读文件的内容?

android internal

41
推荐指数
2
解决办法
12万
查看次数

在Java中有类似内部类的东西吗?

在C#中,您可以将类标记internal为只能从同一个包中访问它.Java中有类似的东西吗?

java class access-modifiers internal

39
推荐指数
3
解决办法
3万
查看次数

如何为Moq显示内部接口?

我的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"正在尝试实现无法访问的接口.

这是有帮助的,但没有.仅更改异常消息.

如何解决我的问题?

c# nunit unit-testing moq internal

38
推荐指数
4
解决办法
1万
查看次数

如何处理包内部的R数据?

我正在开发的R包需要几个R数据对象,例如预先计算的模型和参数.

目前,我将每个对象放在包的'data'目录中的各个.RData文件中.使用包时,用户可以使用"数据"功能将这些对象附加到其环境中.

我想要的行为是,在加载包时,数据对象会自动附加到内部包环境,而用户无法直接访问.

我的理解是将'sysdata.rda'文件放在包含当前在'data'中的对象的包的'R'目录中将给出我想要的结果.但是,有没有办法做到这一点,以便我可以将每个对象放在一个单独的文件而不是组合在一起?

load r internal package rda

31
推荐指数
2
解决办法
7959
查看次数

如何在Android内部存储上创建文件?

我想将内部存储上的文件保存到特定文件夹中.我的代码是:

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:只读文件系统".有任何想法如何在文件夹媒体中的内部手机存储上写我的文件?谢谢.

storage android file internal

26
推荐指数
2
解决办法
13万
查看次数

通过System.Reflection访问内部成员?

我正在尝试对具有许多内部函数的类进行单元测试.这些显然也需要测试,但我的测试项目是分开的,主要是因为它涵盖了许多小的相关项目.到目前为止我所拥有的是:

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并且非常喜欢它,但是我怎么能用它来实现同样的目的呢?

.net c# reflection internal

24
推荐指数
4
解决办法
2万
查看次数

C#程序集,什么是程序集?

我正在尝试理解C#中的内部访问修饰符.我似乎无法理解装配是什么,以及我的程序的哪个部分保存在该装配中.我试图使它变得只有以下命名空间中的对象可访问变量:

namespace Engine.Entity
Run Code Online (Sandbox Code Playgroud)

有问题的变量是在该命名空间内的类中定义的,所以我假设如果我将其设置为内部,则只有该命名空间内的对象才能访问它.我看到程序集和名称空间是一体的,我不认为这是正确的.

c# assemblies internal

23
推荐指数
2
解决办法
9171
查看次数