Принципиальная разница в WebForms и WinForms заключается в том, что WinForms сохраняют состояние. Другими словами, вы можете убедиться, что загруженные вами объекты доступны до тех пор, пока программа не будет закрыта. То же самое нельзя сказать о WebForms, так как HTTP не имеет состояния, а ASP.Net сплетает много «волшебства» [ViewState, сеанс сервера, файлы cookie, скрытые поля и т. Д.], Чтобы склеивать страницы веб-приложения.
С этой базовой концепцией легко сделать объект глобально доступным в WinForms. Используйте класс Singleton / Static и назначьте его членов. Вы всегда можете сказать .Instance .. [в случае статических классов / классов со статическими свойствами], чтобы получить значения из любой формы.
Один Gottcha "потокобезопасен" ... он же .. несколько форм, считывающих / записывающих в статическое свойство одновременно. Если вы можете позаботиться об этом, отдых на одном дыхании.
Для вашей вышеуказанной проблемы:
У вас может быть свой собственный класс Singleton Cache, который будет кэшировать записи. Класс Cache будет пользовательской реализацией коллекции. Вам нужно убедиться, что он поточно-ориентированный [или убедитесь, что ваше приложение загружается только один раз и читает с этого момента] ... Возможно, вам придется рассмотреть полноценный ORM, если вы хотите, чтобы изменения в базе данных отражались в ваших объектах сущностей. .
CacheList.OrderCache[orderNo].Customer.Address.City = "Las Vegas";</p>
<p>class static CacheList
{
public static Cache OrderCache {get; internal set;}</p>
<p>}</p>
<p>public class Cache : CollectionBase where T : Entity
{
.....</p>
<p>}