接口实现中的公共元素

问题描述

| 我有这个接口和一个实现它的类:
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\";
    }
}