我有这个接口和一个实现它的类:
interface Scraper
{
string DateToUrl(DateTime date);
}
class ScraperA: Scraper
{
string Scraper.DateToUrl(DateTime date)
{
return "some string based on date";
}
}
Run Code Online (Sandbox Code Playgroud)
我想测试一下.我尝试将此方法添加到ScraperA:
public void JustATest()
{
DateTime date = new DateTime(2011, 5, 31);
string url = DateToUrl(date);
Console.WriteLine(url);
}
Run Code Online (Sandbox Code Playgroud)
我把它放在类定义中,但编译器抱怨它无法找到DateToUrl.为什么?
通过Scraper在声明中为方法名称添加前缀,您将明确地实现接口.
这意味着除非通过Scraper接口调用,否则该方法基本上是不可见的.
你的选择:
删除Scraper声明中的前缀.然后可以正常调用该方法:
public string DateToUrl(DateTime date)
{
return "some string based on date";
}
Run Code Online (Sandbox Code Playgroud)在调用方法之前将实例强制转换为接口:
public void JustATest()
{
DateTime date = new DateTime(2011, 5, 31);
string url = ((Scraper)this).DateToUrl(date);
Console.WriteLine(url);
}
Run Code Online (Sandbox Code Playgroud)