问题描述
|
我有这个接口和一个实现它的类:
interface Scraper
{
string DatetoUrl(DateTime date);
}
class ScraperA: Scraper
{
string Scraper.DatetoUrl(DateTime date)
{
return \"some string based on date\";
}
}
我想测试一下。我尝试将此方法添加到ScraperA
:
public void JustAtest()
{
DateTime date = new DateTime(2011,5,31);
string url = DatetoUrl(date);
Console.WriteLine(url);
}
我把它放在类定义中,但是编译器抱怨找不到3。为什么?
解决方法
通过在声明中以“ 4”作为方法名的前缀,您将显式实现接口。
这意味着该方法实际上是不可见的,除非通过
Scraper
接口调用该方法。
您的选择:
删除声明中的“ 4”前缀。然后可以正常调用该方法:
public string DateToUrl(DateTime date)
{
return \"some string based on date\";
}
在调用方法之前,将实例强制转换为接口:
public void JustATest()
{
DateTime date = new DateTime(2011,5,31);
string url = ((Scraper)this).DateToUrl(date);
Console.WriteLine(url);
}
, 删除\“ Scraper.DateToUrl \”的\“ Scraper \”部分:
interface Scraper
{
string DateToUrl(DateTime date);
}
class ScraperA: Scraper
{
string DateToUrl(DateTime date)
{
return \"some string based on date\";
}
}