ソースにアクセスできるように見えるので、その変数を公開する最も簡単な方法は、その変数が存在するクラスに public getter を追加することです。そのクラスのインスタンスは、内部変数にアクセスできます。
EDIT:(コード例を追加)
内部値にアクセスするコードがどこに存在するかがすべてです。以下の例でこれを説明していただければ幸いです。1 つは ExternalAssembly と呼ばれ、もう 1 つは MyApplication と呼ばれる 2 つのプロジェクトを含むソリューションがあるとします。MyApplication には、そのクラスにアクセスするための ExternalAssembly への参照があります。
プロジェクト: 外部アセンブリ
namespace ExternalAssembly
{
public class MyClass
{
internal string hiddenString;
public MyClass()
{
this.hiddenString = "This is my value.";
}
public string Exposed
{
get { return this.hiddenString; }
}
}
public class MyClass2
{
private MyClass classInstance;
public MyClass2()
{
this.classInstance = new MyClass();
}
public string Exposed2
{
get { return this.classInstance.hiddenString; }
}
}
}
プロジェクト: MyApplication
namespace MyApplication
{
using ExternalAssembly;
public class CallInternalTest()
{
MyClass classInstance = new MyClass();
MyClass2 class2Instance = new MyClass2();
// this will fail since hiddenString is an internal variable
Console.WriteLine(classInstance.hiddenString);
// this will succeed since Exposed is a public member
Console.WriteLine(classInstance.Exposed);
// this will also succeed since Exposed2 is a public member
Console.WriteLine(class2Instance.Exposed2);
}
}