代码之家  ›  专栏  ›  技术社区  ›  misteraidan

通过线路发送接口定义(WCF服务)

  •  0
  • misteraidan  · 技术社区  · 17 年前

    我有一个wcf服务,它生成loads实体框架对象(以及一些用于减轻负载的其他结构和简单类),并将它们发送到客户机应用程序。

    我已经更改了两个类来实现接口,这样我就可以在应用程序中将它们作为单个对象类型引用。很像这个例子: 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 回复  |  直到 17 年前
        1
  •  1
  •   Anderson Imes    17 年前

    在您的WSDL中,接口不会作为单独的实体出现——它们只会将方法和属性添加到公开它们的对象中。

    您想要完成的工作可以使用抽象类来完成。这些将被视为不同的实体。

    祝你好运。让我们知道你决定怎么做。