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

Изменение программных настроек типового решения

Изменение программных настроек типового решения

Некоторые настройки типового решения доступны для изменения в классе KrSettings (Tessa.Extensions.Default.Shared.Settings). Для их корректного изменения необходимо написать расширение на настройки ISettingsExtension.

Note

Расширения на настройки доступны, начиная со сборки 2.4.

Расширение размещают в Tessa.Extensions.Shared, чтобы настройки были доступны и на клиенте, и на сервере. Если настройки актуальны только для клиента или только для сервера, то расширение можно разместить и зарегистрировать в Tessa.Extensions.Client или Tessa.Extensions.Server.

using System; using Tessa.Extensions.Default.Shared.Settings; using Tessa.Platform.Settings;

namespace Tessa.Extensions.Shared.Settings { public sealed class AbSettingsExtension : SettingsExtension { public override void Initialize(ISettingsExtensionContext context) { // если настройки не зависят от базы данных, то просто их устанавливаем KrSettings settings = context.Settings.Get<KrSettings>(); settings.NotificationCheckInterval = TimeSpan.FromMinutes(1);

// настройки, которые хранятся в некоторых карточках в базе данных, необходимо получать // непосредственно из базы на сервере, т.к. API карточек к этому моменту не инициализировано if (context.DbScope != null) { using (context.DbScope.Create()) { Guid currentUserID = context.Session.User.ID; // мы на сервере, здесь можно получить настройки из базы данных для текущего пользователя } } else { // мы на клиенте, можем либо не устанавливать настройки вообще, // либо загрузить их с сервера вместе с расширениями на IClientInitializationExtension } } } }

Код регистрации:

using Tessa.Platform.Settings;

namespace Tessa.Extensions.Shared.Settings { [Registrator] public sealed class Registrator : RegistratorBase { public override void RegisterExtensions(IExtensionContainer extensionContainer) { extensionContainer .RegisterExtension<ISettingsExtension, AbSettingsExtension>(x => x .WithOrder(ExtensionStage.AfterPlatform, 1) .WithSingleton()) ; } } }

Back to top