Предложения в моем комментарии являются возможными решениями. Пока вы возвращаете действительный Client
или Client
-обработанный объект в IS4 для FindClientByIdAsync()
, вы можете хранить все, что вам нравится, против вашего Клиента.
Опция 1: производная от Client
:
public MyClient : Client
{
public string MyExtraProperty { get; set; }
}
Task<Client> FindClientByIdAsync(string clientId)
{
MyClient result = // fetch your client here;
return result;
}
Вариант 2: адаптироваться к Client
:
public MyClient
{
// Properties that Client requires, or can be adapted to what Client requires, here.
// ...
public string MyExtraProperty { get; set; }
}
Task<Client> FindClientByIdAsync(string clientId)
{
MyClient result = // fetch your client here;
return Adapt(result);
}
private Client Adapt(MyClient value)
{
return // your-client-adapted-to-Client here;
}
Поскольку Client
уже содержит много данных, этот параметр имеет меньший смысл, чем др.
Вариант 3: добавить к Properties
:
Здесь вы добавляете свои дополнительные данные в коллекцию Client.Properties
. IS4 проигнорирует это, но вы можете получить доступ к данным везде, где доступен экземпляр Client
. Для этой опции не требуется пользовательский тип или даже пользовательский IClientStore
; это уже поддерживается.