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/