接口上的扩展方法未显示

时间:2019-02-13 10:36:32

标签: c# .net extension-methods

我正在研究一个类库,以将某些导航功能扩展到开放源代码框架。我不希望将这些功能直接作为拉取请求添加到框架中,因为它不会被所有人使用,并且不想不必要地增加框架的大小。所以我的想法是实现为扩展方法。

这是在框架中实现代码的方式。

public interface INavigationService
{
    Task Method1();
    Task Method2();
}

public class NavigationService : INavigationService
{
    public async Task Method1
    {
      //Implementation
    }

    public async Task Method1
    {
      //Implementation
    }
}

并且在框架内的基本viewmodel中,具有INavigationService类型的属性。

public class BaseFrameworkViewModel
{
   public INavigationService NavigationService {get; set;}

   //Other implementations.
} 

使用该框架的开发人员的确从应用程序项目中的BaseFrameworkViewModel继承并使用方法Method1和Method2。

public class BaseViewModel : BaseFrameworkViewModel
{
     NavigationService.Method1();
     NavigationService.Method2();
}

现在,我想将Method3添加到NavigationService类。为此,我创建了一个.NetStandard类库,并添加了一个静态类,并创建了如下扩展方法。但是我看不到BaseViewModel中的方法。

我的实现

public static class NavigationExtensionService
{
   public static async Task Method3(this INavigationService navigationService, string a1)
   {
       //Method Implementation
   } 
} 

我已经建立了自己创建的库,并已在应用程序项目中引用该库,但是当我尝试以下操作时,我在NavigationService上没有得到Method3。

NavigationService.Method3("abcd") //does not resolve Method3

感谢有人可以帮助解决此问题。

1 个答案:

答案 0 :(得分:4)

除了引用程序集外,还需要在要使用扩展方法的文件中导入名称空间。