C#のフルネーム区切り文字はピリオド文字(.)です。例:System.Console.Write。
これはのような場所で定義されていますかPath.PathSeperator、それとも.NETリフレクションクラスでもハードコーディングされていますか?
(例えば、それが変わらないと仮定してType.FullName実装されていますか?Type.Namespace + "." + Type.Name
C#のフルネーム区切り文字はピリオド文字(.)です。例:System.Console.Write。
これはのような場所で定義されていますかPath.PathSeperator、それとも.NETリフレクションクラスでもハードコーディングされていますか?
(例えば、それが変わらないと仮定してType.FullName実装されていますか?Type.Namespace + "." + Type.Name
基本的に:言語仕様。しかし実際にType.FullNameは、C#定義ではなく、BCL定義を使用しています。興味深いことに、それらは同意しません。例えば:
namespace X {
public class Y {
public class Z {}
}
}
C#にZはX.Y.Z、; BCLにとってはX.Y+Zです。ジェネリックスの表現も変更されます。BCLでは、角かっこではなくバックティックと数字を使用します。BCLはCLIのタイプの形式(別の仕様があります)を使用していると思いますが、考えてみれば、そうする必要はありません(リフレクションエミット中を除く)。
AFAIK、これらのセパレーターは-のようなものを介して公開されていませんが、あなたが言うように、 etcクラスPath.PathSeparatorにハードコードされています。Type
タイプとその名前空間の間の区切り文字は、Type.DelimiterフィールドのBCLで定義されます。この値はReflectionAPIで使用されており、型とその名前空間を連結するために確実に使用できます。