#c# #designer #system.componentmodel
Вопрос:
В настоящее время я использую эту систему.Компонентная модель.Дизайн.Пространство имен сериализации для создания кода на C#. Этот код компилируется позже другим приложением.
var manager = new DesignerSerializationManager(host);
using (manager.CreateSession())
{
var serializer = (TypeCodeDomSerializer)manager.GetSerializer(root.GetType(),
typeof(TypeCodeDomSerializer));
type = serializer.Serialize(manager, root, host.Container.Components);
....
}
Это приведет к созданию кода C#, такого как:
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(TestForm));
this.SuspendLayout();
//
// TestForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage")));
this.ClientSize = new System.Drawing.Size(800, 450);
this.Name = "TestForm";
this.Text = "Form1";
this.ResumeLayout(false);
}
Теперь я пытаюсь понять, могу ли я создать файл resx, чтобы дополнить созданный код.
Как вы можете видеть с помощью строки:
this.BackgroundImage = ((System.Drawing.Image)(resources.GetObject("$this.BackgroundImage")));
Это ссылается на файл resx, но если вы попытаетесь скомпилировать эту строку, то обнаружите, что файл resx отсутствует.
Я искал сериализатор для поверхности дизайна, который делает это, но я не могу найти его ни разу.
Если у кого-нибудь есть какие-либо знания об этом, может быть, вы сможете указать мне правильное направление?
Комментарии:
1. Возможно, это должна быть функция сетки свойств конструктора для создания файла resx при изменении объекта, и это свойство сериализуется по типу.
2. У меня та же проблема, вы когда-нибудь решали ее?