Используются object вместо нужных интерфейсов при добавлении ссылки на службу

Пишу простенькое клиент-серверное приложение. Сервер хранит некоторые данные. Клиент их обрабатывает и отправляет на сервер для других клиентов. Раньше всегда работал со стандартными типами переменных и полей (string и тд). Сейчас возникла нужда использовать свои интерфейсы. Файл IService:

[ServiceContract(CallbackContract = typeof(IServerCallback))]
public interface IService
{
    [OperationContract]
    string GetString(); //создал "тестовый". Этот отлично работает после добавления ссылки на службу.
    //Так и остаётся возвращаемый тип string

    [OperationContract]
    IUser GetUsers(); //а вот здесь интерфейс заменяется на object
}

Сам интерфейс:

public interface IUser
{
    Guid Id { get; }

    IUser TryAdd(IUser client);

    void TryRemove(Guid userId);

    IUser? TryFind(Guid userId);
}

Раньше всегда использовал стандартные типы (string, int и подобные), поэтому возникла проблема в этом месте. Архитектура проекта следующая:

-Host (сам сервер). У него есть ссылка на Storage

-Storage (здесь находятся все интерфейсы (в том числе IService), их реализация, перечисления и прочее)

-Client (клиент, который обрабатывает информацию и должен отправлять её на сервер). Он не имеет ссылок на другие проекты

Добавляю вот так: введите сюда описание изображения

Как это работает у меня в голове: Я добавляю ссылку на службу и автоматически создаются нужные ссылки на интерфейсы и тд. Может это нужно как-то задать? Я крайне сильно не хочу добавлять в Client ссылку на весь проект Storage, т.к. это разные проекты, которые не совсем правильно будет "совмещать"


Ответы (0 шт):