WCF回调接口-实现第三方接口

本文关键字:接口 第三方 实现 WCF 回调 | 更新日期: 2023-09-27 18:09:03

我有一个接口定义,我想与解决方案中的其他程序集共享,所以我把它放在一个单独的项目中;

public interface IName
{
    string Name { get; }
}

但是我想在定义WCF回调接口的项目中使用它:

public interface ICallback : IName
{
}

所以我添加了[OperationContract]属性到IName接口,像这样:

public interface IName
{
    string Name
    {
        [OperationContract(IsOneWay=false)]
        get;
    }
}

但是当我使用svcutil时,输出类不包含继承的属性。我已经尝试使用/r标志来引用包含IName的程序集,但它仍然忽略该属性。

我甚至尝试将[ServiceKnownType]属性添加到回调接口,但仍然没有运气:

[ServiceKnownType(typeof(IName))]
public interface ICallback : IName
{
}

是否可以在WCF回调中实现外部接口?

WCF回调接口-实现第三方接口

是,接口继承工作与WCF。

尝试将接口设置为公共(以便在其他程序集中可访问,在您的情况下,它是内部的)。

我不确定WCF是否支持公共接口的属性。尝试使用一些测试方法而不是回调接口上的属性。WCF接口的工作方式与c#接口不同。例如,WCF不支持重载。试试这样:

public interface IName
{
    [OperationContract(IsOneWay=false)]
    string GetName();
}