У меня есть служба WCF, которая генерирует нагрузки объектов Entity Framework (а также некоторые другие структуры и простые классы, используемые для облегчения загрузки) и отправляет их клиентскому приложению.Отправка определения интерфейса через провод (служба WCF)
Я изменил 2 класса для реализации интерфейса, чтобы я мог ссылаться на них в своем приложении как на один тип объекта. Очень похоже на этот пример: Is it Possible to Force Properties Generated by Entity Framework to implement Interfaces?
Однако тип интерфейса не добавляется к моему прокси-клиенту службы WCF thingymebob, поскольку он напрямую не ссылается на объекты, которые отправляются обратно по проводу.
Поэтому в моем приложении, которое использует прокси-классы обслуживания, я не могу бросить или ссылаться на мой интерфейс ..
Любые идеи, что я пропавшими без вести?
Вот пример кода:
//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 из проекта 2? Я полагаю, что ссылка на службу повторно использует ссылочные типы по умолчанию. – JohnOpincar
Я не ссылаюсь на типы из приложения «Сервис» непосредственно в своем клиентском приложении. Я думал об этом раньше, но решил сохранить стену между двумя приложениями, чтобы минимизировать зависимость. Если бы я собирался включить ссылки на проекты EF/WCF, я мог бы просто написать это как одно приложение. – misteraidan