ギブンズ:
- クラスは、静的でなければならない別のクラス内からアクセスできる必要があります (選択不可)。
- FOO クラスは、例の構造で指定されたアイテムのコレクションのネストされた配列をサポートする再帰可能である必要があります。
- FOO は、すべてのネストされた配列と XML を含む後続の項目を含めて完全にシリアライズ可能である必要があります (派手なトリックを使用せずに、1 つのクラスのみをサポートしているように見える xml に直接シリアライズし、それに応じてネストされたクラス/構造を自動検索します)
問題は、FOOTabItem のプロパティにアクセスできないため、次のことができないことです。
// can not be static
public class TestClass : SomeFancyInheritedObject {
// must be static
public static void Test() {
FOO.FOOTabItem bar = new FOOTabItem();
bar.Count = 100; // This is inaccessible
}
}
これは、から公開されたオブジェクトを作成するのに問題があるクラス コードです。
public static class FOO {
public static int Money { get; set; }
public static List<FOOTab> Tabs { get; set; }
public static struct FOOTab {
public static List<FOOTabItem> Items { get; set; }
public static FOOTab TabInformation { get; set; }
}
public static struct FOOTabItem {
public static ItemInfo Item { get; set; }
public static int Count { get; set; }
}
public static FOO() {
Tabs = new List<FOOTab>();
Money = 0;
}
}
FOOの代わりにネストされたクラスを使用しようとしましたstruct
が、これにより、クラスをオブジェクトパラメーターとして使用できないとFOOが不平を言う結果になりました。これが、struct
代わりに使用しているためです。
このコードには構文エラーはありません。FOO 自体のプロパティなどを公開し、構造体をインスタンス化new()
できますが、構造体のプロパティは表示されません。
これはパーミッションの問題 (public / static / internal / etc) である可能性が高いと思いますが、これを修正するために正確に何をすべきかわかりません。私はSOを検索しましたが、本質的に同様の問題がありますが、静的クラス内のネストされたオブジェクトのリストと、他の静的クラス内からそれらに適切にアクセスする方法に関する明確な洞察を提供しません。