С тех пор, как я написал свой ответ выше, я узнал о другом решении, которое ближе к тому, что я искал изначально.
Чтобы использовать объекты с переменными экземпляра, вы можете получить из LabeledInstance
, как показано ниже. Экземпляры должны быть распределены с использованием статического метода Create()
, а поля должны быть инициализированы переопределенным методом Initialize()
.
(Вы также можете использовать методы экземпляра для действий, но для этого необходимо назначить домен для класса; имя этого домена должно соответствовать статическому набору, который содержит все текущие экземпляры класса.)
За кулисами NModel собирается перевести этот класс в набор карт, по одной для каждой переменной экземпляра в классе. Ключ в этих картах будет индексированными экземплярами имени класса, например, State(1)
. Это может быть довольно трудно прочитать в инструменте MVC, поэтому вы можете также захотеть сохранить какую-то переменную экземпляра, которая содержит четкую, сводную сводку состояния объекта.
class State : LabeledInstance<State>
{
public override void Initialize()
{
send_msg1 = false;
recv_msg1 = false;
}
public bool send_msg1;
public bool recv_msg1;
}
public static State X = State.Create();
public static State Y = State.Create();