Вопрос, который часто задают разработчики, переходя с Delphi на C#, связан с возможностью создания свойств, которые не будут сохраняться в файле .dfm (аналог .designer.cs в C#). В Delphi это реализуется с помощью модификатора stored false, который позволяет указать, что значение свойства не должно сохраняться в проекте. Пример такого свойства - Connected для объекта соединения, значение которого не должно сохраняться в проекте, если он активен только во время выполнения программы.
В Delphi код для создания такого свойства выглядит следующим образом:
type
TggAdoConnection = class(TADOConnection)
published
property Connected stored false;
end;
Такая конструкция позволяет разработчику не беспокоиться о состоянии соединения во время разработки, так как это значение не будет сохранено в файле .dfm.
Перейдем к C#. Как создать свойство, которое не будет сохраняться в файле .designer.cs? Ответ заключается в использовании атрибута DesignerSerializationVisibility. Этот атрибут позволяет управлять тем, как свойство ведет себя при сериализации, включая сохранение в файлах, сгенерированных дизайнером.
Вот пример создания свойства в C#, которое аналогично свойству Connected в Delphi:
using System;
using System.ComponentModel;
public class CustomAdoConnection : System.Data.OleDb.OleDbConnection
{
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
public new bool Connected
{
get { return base.State == ConnectionState.Open; }
}
}
В этом примере свойство Connected используется для отображения состояния соединения, но не сохраняется в файле .designer.cs благодаря атрибуту DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden).
Итак, для того чтобы сделать свойство в C# невидимым для дизайнера, используется атрибут DesignerSerializationVisibility. Это позволяет разработчикам создавать свойства, аналогичные Delphi stored false, что обеспечивает большую гибкость и контроль в процессе разработки.
Вопрос связан с созданием свойств в C#, которые не должны сохраняться в файле .designer.cs, аналогично свойствам с модификатором `stored false` в Delphi.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS