InstanceConfigurationBuilderItem - конструктор

Объект, соответствующий конфигурационному файлу, хранилище которого возвращается указанным методом для экземпляром класса.

Definition

Пространство имён: Tessa.Platform.Configuration
Сборка: Tessa (в Tessa.dll) Версия: 4.1.3+7e2b1422f9b8c7c41fbbc4b151a843bed05319ab
C#
public InstanceConfigurationBuilderItem(
	Func<Object?> createInstanceFunc,
	MethodInfo methodInfo,
	Dictionary<string, Object?> parameters
)

Параметры

createInstanceFunc  FuncObject

Функция, создающая экземпляр класса, для которого выполняется метод MethodInfo для получения хранилища конфигурационного файла.

Если экземпляр реализует интерфейс IAsyncInitializable, то он будет инициализирован перед использованием.

Если экземпляр реализует интерфейс IAsyncDisposable или IDisposable, то он будет освобождён после использования.

methodInfo  MethodInfo

Метод, выполняемый для получения хранилища конфигурационного файла.

Должен возвращать Dictionary<string, object?>? либо явно, либо асинхронно как TaskTResult или ValueTaskTResult.

Первым параметром метод получает объект из директивы IncludeConfigurationDirective. Вторым опциональным параметром метод получает значение Storage, третьим опциональным параметром - Info, а четвёртым опциональным параметром - CancellationToken.

parameters  DictionaryString, Object
Параметры директивы IncludeConfigurationDirective, передаваемые в метод MethodInfo.

Пример

Пример класса в отдельной сборке, реализующего метод Invoke:

C#
public class MyLoaderClass
{
    public async ValueTask<Dictionary<string, object?>?> Invoke(
        Dictionary<string, object?> parameters,
        Dictionary<string, object?> storage,
        Dictionary<string, object?> info,
        CancellationToken cancellationToken = default)
    {
        // parameters - json object from ".include" directive
        // storage - current storage before including, same as context.Storage
        // info - additional info, same as context.Info

        if (parameters.TryGet<object>("uri") is string uri)
        {
            // load configuration from uri
            return new Dictionary<string, object?> { ["Result"] = 42L };
        }

        return null;
    }
}

Пример содержимого app.json для использования такого загрузчика из сборки MyLibrary.dll:

json
{
  ".include": [
    {
      ".loader.type": "MyNamespace.MyLoaderClass, MyLibrary",
      "uri": "https://my.configuration.server/files/app.json"
    }
  ]
}

См. также