2014-06-18 71 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