从另一个项目访问内部类

Ada*_*zek 9 c# internal

我想知道是否可以从c#中的其他项目访问内部类变量.我知道在常规使用中这是不可能的,我在下面解释.

我有一个项目(P1 [类库])包含这些类...

internal class Settings
{
    public static long size {get;set;}

    public static DoSomethingInternalOnly()
    {
    }
}

public class Program
{
    public static Main()
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

......和另一个(P2)包含:

public class Program
{
    public static Main()
    {
        //P1.CopyOfSettings.size = 2048; ???
    }
}
Run Code Online (Sandbox Code Playgroud)

在Settings类中,我存储了app的内部变量(和方法),这些变量在其他项目中是看不到的.但是这些设置需要以某种方式从P2传递到P1所以我需要P2中的第二类"Settings2"包含相同的变量(仅变量!)作为带有public关键字的"Settings".

我觉得创建包含相同变量的几个类是浪费时间并使代码不可读.有没有更好的方法来实现这一目标?

Sim*_*ead 19

您可以使用InternalsVisibleTo属性并提供可以查看internal程序集中类型的特定程序集的名称.

话虽如此......我认为你正在接受过度设计.如果Settings该类仅属于程序集A ...请勿将其放入程序集B中...将其放入程序集A.


Mat*_*son 5

是的,使用 InternalsVisibleTo,但我只建议对单元测试项目执行此操作。

否则,您应该提取一个公共接口,将其公开并将其放在两个项目都可以引用的单独程序集中。

您可以将接口的所有属性设为只读,以便使用者无法更改它们。