public class Parser
{
    Downloader download = new Downloader();
    HtmlDocument Page;

    public Parser(string MovieTitle)
    {
        Page = download.FindMovie(MovieTitle);
    }

    public Parser(string ActorName)
    {
        Page = download.FindActor(ActorName);
    }
}

我想创建一个构造函数,允许其他使用此库的开发人员轻松创建一个 Parser 对象,并在创建完成后立即加载相关的 HtmlDocument。

问题在于构造函数不能以相同类型的参数存在两次。当然 可以分辨出两个参数之间的逻辑差异,但计算机不能。

如何处理?

最佳答案

改用几个 static 方法:

public class Parser
{
    Downloader download = new Downloader();
    HtmlDocument Page;

    private Parser() { } // prevent instantiation from the outside

    public static Parser FromMovieTitle(string MovieTitle)
    {
        var newParser = new Parser();
        newParser.Page = newParser.download.FindMovie(MovieTitle);
        return newParser;
    }

    public static Parser FromActorName(string ActorName)
    {
        var newParser = new Parser();
        newParser.Page = newParser.download.FindActor(ActorName);
        return newParser;
    }
}

关于c# - 如何创建两个行为不同但接收相同数据类型的构造函数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3027310/

10-12 02:57