我正在研究一个类库,以将某些导航功能扩展到开放源代码框架。我不希望将这些功能直接作为拉取请求添加到框架中,因为它不会被所有人使用,并且不想不必要地增加框架的大小。所以我的想法是实现为扩展方法。
这是在框架中实现代码的方式。
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
感谢有人可以帮助解决此问题。
答案 0 :(得分:4)
除了引用程序集外,还需要在要使用扩展方法的文件中导入名称空间。