2014-06-18 65 views
0

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

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回调的外部接口?

+0

标记与'ServiceContract'类,请参见http://msdn.microsoft.com/en-us/library/system.servicemodel.servicecontractattribute(v=vs.110).aspx – 3dd

+0

我正在定义回调,而不是服务'[ServiceContract(SessionMode = SessionMode.Required,CallbackContract = typeof(ICallback))] public interface IServer {}' – HomeAlone

回答

0

是的,接口继承与WCF一起工作。

试着让接口公开(在其他程序集中可访问,在你的情况下是内部的)。

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

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

我的不好。他们是公开的,但我没有在原帖中写下。要更新帖子。 – HomeAlone

+0

“方法而不是财产”测试呢? – Fanda