Перейти к содержанию

(MultiCad) Помогите с сериализацией


Рекомендуемые сообщения

Для иллюстрации вопроса создал небольшой тестовый фрагмент:

namespace ClassLibrary1
{
   //## Класс с командами NANOCAD
   public static class Commands
   {
    [CommandMethod("temp1", CommandFlags.NoCheck | CommandFlags.NoPrefix)]
    static public void temp1Cmd()
    {
	    for (int i = 0; i < 30; i++)
	    {
		    Q.s.Add(new ser() { id = i });
	    }
    }
    [CommandMethod("temp2", CommandFlags.NoCheck | CommandFlags.NoPrefix)]
    static public void temp2Cmd()
    {
	    System.Windows.Forms.MessageBox.Show(
		    String.Join("; ", Q.s.Select (x => x.id.ToString()).ToArray())
		    );
    }
   }
   [serializable]
   public class ser
   {
    public int id = 0;
    public override string ToString()
    {
	    return id.ToString();
    }
   }
   [serializable]
   static public class Q
   {
    public static List<ser> s = new List<ser>();
   }
}

Если я запущу "temp1" и затем "temp2" я получу список из 30 цифр.

при закрытии чертежа, но НЕ nanocad, и повторного открытия документа запуская "temp2" - те же 30 цифр.

А вот, если ЗАКРЫТЬ nanocad, при повторной загрузке чертежа, после запуска "temp2" - коллекция будет пустой!

 

Полагаю, что проблема в сериализации, но не соображу где именно!

Ссылка на сообщение
Поделиться на другие сайты

Ещё попутный вопрос:

как обработать событие открытия документа?!

Ссылка на сообщение
Поделиться на другие сайты

1)

А что вас удивляет?

Ваш класс Q обычный статический класс, при запуске нанокада он пустой, при закрытии документа с ним ничего не происходит, или вы предполагаете что все все сериализуемые классы автоматически сохраняются в документ? Это невозможно. Атрибут [Serializable]

это штатный атрибут C# который указывает на _возможность_ сериализации.

 

В документ сохраняются только объекты добавленные в документ, наследники McCustomBase. Или данные установленные в MCDocument.ObjectProperties

 

2) GlobalEvents

Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
  • Расскажите друзьям

    Нравится Официальный форум компании Нанософт? Расскажите друзьям!
×
×
  • Создать...