2015-04-01 120 views
0

好吧!這已經在幾個小時裏給我強調了。c#接口實現異步等待

我使用所提供的組件有一個接口,我需要實現

public interface ICustomInterface 
{ 
     CustomType DoSomething(string name); 
} 

在我的代碼我這樣做:

public class MyClass: ICustomInterface 
{ 
    public MyClass() 
    { 
    } 

    // now I should implement the interface like this 

    public CustomType DoSomething(string name) 
    { 
      CustomType nType = new CustomType(); 

      // do some work 

      return nType; 
    } 
} 

到目前爲止好,但在我執行MyClass I中的接口需要使用async await因此實現應該是這樣的:

public class MyClass: ICustomInterface 
{ 
    public MyClass() 
    { 
    } 

    // now I should implement the interface like this 

    public async Task<CustomType> DoSomething(string name) 
    { 
      CustomType nType = new CustomType(); 

      await CallSomeMethodAsync(); 

      // do some extra work 

      return nType; 
    } 
} 

當然,這不起作用,因爲它抱怨接口​​沒有實現。

是否有一種方法來覆蓋接受異步等待的接口實現?我不能修改提供的組件。

+2

你不能那樣做。 – SLaks 2015-04-01 19:44:59

+0

尋找答案:http://stackoverflow.com/questions/13573516/interfaces-and-async-methods – maximdumont 2015-04-01 19:45:10

回答

4

這是不可能的。如果接口要求同步計算操作,則需要同步執行操作。

+0

然後我將如何使用我的異步操作呢? – 2015-04-01 19:48:18

+1

@DavidDury既可以同步執行操作,也可以不是異步執行操作,也可以不實現接口(可能使用不同的接口)。這當然是因爲你無法修改有問題的界面。 – Servy 2015-04-01 19:48:47

+0

我期待着這個答案,在過去的3個小時裏嘗試了一切......但謝謝澄清! – 2015-04-01 19:51:06