我有这个界面和一个实现它的类:
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);
}
我把它放在类定义中,但是编译器抱怨它找不到DateToUrl
。为什么呢?
答案 0 :(得分:5)
通过在implementing the interface explicitly声明中使用Scraper
为方法名称添加前缀。
这意味着除非通过Scraper
接口调用该方法,否则该方法基本上是不可见的。
您的选择:
删除声明中的Scraper
前缀。然后可以正常调用该方法:
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);
}
答案 1 :(得分:0)
删除“Scraper.DateToUrl”的“Scraper”部分:
interface Scraper
{
string DateToUrl(DateTime date);
}
class ScraperA: Scraper
{
string DateToUrl(DateTime date)
{
return "some string based on date";
}
}