Отправка определения интерфейса по сети (служба WCF) - PullRequest
0 голосов
/ 19 мая 2009

У меня есть служба WCF, которая генерирует загруженные объекты Entity Framework (а также некоторые другие структуры и простые классы, используемые для облегчения нагрузки) и отправляет их клиентскому приложению.

Я изменил 2 класса для реализации интерфейса, чтобы я мог ссылаться на них в своем приложении как на один объектный тип. Так же, как этот пример: Возможно ли принудительно применить свойства, сгенерированные Entity Framework, для реализации интерфейсов?

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

Поэтому в моем приложении, которое использует прокси-классы служб, я не могу привести или сослаться на свой интерфейс.

Есть идеи, что мне не хватает?

Вот пример кода:

//ASSEMBLY/PROJECT 1 -- EF data model

namespace Model
{
    public interface ISecurable
    {
        [DataMember]
        long AccessMask { get; set; }
    }

    //partial class extending EF generated class
    //there is also a class defined as "public partial class Company : ISecurable"
    public partial class Chart : ISecurable
    {
        private long _AccessMask = 0;
        public long AccessMask
        {
            get { return _AccessMask; }
            set { _AccessMask = value; }
        }

        public void GetPermission(Guid userId)
        {
            ChartEntityModel model = new ChartEntityModel();
            Task task = model.Task_GetMaskForObject(_ChartId, userId).FirstOrDefault();
            _AccessMask = (task == null) ? 0 : task.AccessMask;
        }
    }
}

//ASSEMBLY/PROJECT 2 -- WCF web service
namespace ChartService
{
    public Chart GetChart(Guid chartId, Guid userId)
    {
         Chart chart = LoadChartWithEF(chartId);
         chart.GetPermission(userId); //load chart perms
         return chart; //send it over the wire
    }
}

1 Ответ

1 голос
/ 21 мая 2009

Интерфейсы не будут восприниматься как отдельные объекты в вашем WSDL - у них просто будут свои методы и свойства, добавленные к объекту, который их выставляет.

То, что вы хотите достичь, вы можете сделать, используя абстрактные классы. Они встретятся как отдельные сущности.

Удачи. Дайте нам знать, как вы решили продолжить.

...