クラス名:MyAssembly.MyClass+MyOtherClass
問題は明らかに+
、従来のドットではなく、セパレータとしての機能と、他のセパレータが存在するかどうかを確認するための公式ドキュメントを見つけることです。
これは、ネストされた型を表す方法です。したがって、たとえば:
namespace Foo
{
class Outer
{
class Nested {}
}
}
Foo.Outer+Nested
コンパイルされたコードにフルネームのタイプを作成します。(typeof(Outer.Nested).FullName
たとえば、それが返されます。)
これが指定された動作なのか、それともMicrosoft C#コンパイラが使用することを選択したのかは私にはわかりません。これは、通常のC#では+を含むクラスを明示的に宣言できないという点で「言いようのない」名前であるため、コンパイラーは、他のクラスと衝突しないことを認識しています。C#3仕様のセクション10.3.8は、私が見る限り、コンパイルされた名前を指示していません。
編集:Type.AssemblyQualifiedName
ネストされた型名の前に「+」が使用されることを指定しているのを見たばかりですが、それが実際に必要なのか、それとも従来型なのかはまだはっきりしていません。
これは、コンパイラがメタデータでネストされたクラスを表すために使用するものです。
すなわち
class A { class B {} }
として見られるだろう
class A+B
メタデータ内