Особенности методов задания значения по умолчанию

Задание значений по умолчанию доступно как при редактировании диаграммы классов, так и в программном коде. Рассмотрим основные особенности этих методов.

Задание значения по умолчанию на диаграмме классов

Скалярные типы

Чтобы указать на диаграмме классов значение по умолчанию для полей скалярных типов достаточно определить его в DefaultValue у соответствующего поля (обратите внимание на особенности генерации для DefaultValue).

Cкалярные nullable-типы

Задание значения по умолчанию на диаграмме классов для скалярных nullable-типов происходит аналогично скалярным типам.

Generic Nullable-типы могут быть инициализированы значениями, которые достаются из внутренних типов. Например, если присвоить значение Now в поле Default для атрибута на диаграмме классов, можно получить такой код:

private System.Nullable<System.DateTime> fRelease = System.DateTime.Now;

Комплексные типы

Задать значение по умолчанию на диаграмме классов для поля комплексного типа (например, заданного с помощью класса со стереотипом Типы-данных-классы-со-стереотипом-type-и-их-своиства) в общем случае невозможно.

Синонимы типов

Для синонимов типов задание значения по умолчанию на диаграмме классов происходит аналогично тому, как это происходит у типов, синонимами которых они являются.

Задание значения по умолчанию в программном коде

Приём Преимущества Недостатки
Задание значения по умолчанию в коде формы + Позволяет для каждой формы задавать свои значения по умолчанию - Требует проводить инициализацию значений по умолчанию в каждой форме
Задание значения по умолчанию в объекте данных + Позволяет задавать значение по умолчанию в одном месте - Усложнение кода, если каждой форме требуются свои значения по умолчанию
Задание значения по умолчанию в бизнес-сервере + Позволяет задавать значение по умолчанию в одном месте и отделить логику от интерфейса - Усложнение кода, если каждой форме требуются свои значения по умолчанию

Задание значения по умолчанию в коде формы

public class WinformC__ПациентE : ICSSoft.STORMNET.UI.BaseWinEdit, IIS.BSTest.DPDIC__ПациентE
{
	private void WinformC__ПациентE_DataObjectOnFormLoaded(object sender, EventArgs e)
	{
		((Пациент) this.DataObject).ФИО = "ФИОПациента"; //задаём значения по умолчанию
		...
	}
	//...
}

Задание значения по умолчанию в объекте данных

public class Пациент : ICSSoft.STORMNET.DataObject
{
	private fФИО = "ФИОПациента"; //установка значения по умолчанию
	public string ФИО 
	{
		get
		{
			return fФИО;
		}
		
		set
		{
			fФИО = value;
		}
	}
	//...
}

Задание значения по умолчанию в бизнес-сервере

Код формы:

public class WinformC__ЗаписьНаПриёмE : ICSSoft.STORMNET.UI.BaseWinEdit, IIS.BSTest.DPDIC__ЗаписьНаПриёмE
{
	private void WinformC__ЗаписьНаПриёмE_DataObjectOnFormLoaded(object sender, EventArgs e)
	{
		//определяем, какие бизнес-сервера определены для объекта типа "ЗаписьНаПриём"
		BusinessServer[] businessServers = BusinessServerProvider.GetBusinessServer(typeof(ЗаписьНаПриём), DataServiceObjectEvents.OnAllEvents, DataServiceProvider.DataService);
		if (businessServers.Length>0) 
		{
			TestBS curBS = (TestBS) businessServers[0]; //берём первый и единственный (в данном случае единственный)
			curBS.InitializeRecord(this.DataObject as ЗаписьНаПриём); //задаём значения по умолчанию
			EditManager.Change(); //применяем внесённые изменения
		}
	}
	//...
}

Код бизнес-сервера:

public class TestBS : ICSSoft.STORMNET.Business.BusinessServer
{
	public void InitializeRecord(IIS.BSTest.ЗаписьНаПриём RecordToInitialize)
	{
		RecordToInitialize.Дата = new DateTime(2012,12,12); //установка значения по умолчанию
	}
	//...
}