c# - 如何创建两个构造函数重载,都只采用一个字符串参数?

标签 c# .net constructor

例如,您希望一个对象可能以两种方式初始化,使用文件路径和使用字符串。通常两个构造函数都应该采用一个字符串参数,MyObject(string file)MyObject(string content),但不可能以这种方式重载。你有什么建议?

编辑:在第一种情况下,还需要文件路径,因此请不要建议读取文件内容并将内容传递给其他构造函数的解决方案。

最佳答案

我不是 C# 程序员,但这看起来像是 static factory method 的工作图案:

class MyObject {
  public static MyObject FromContent(string content) {
    return new MyObject(content);
  }

  public static MyObject FromFile(string path) {
    return new MyObject(ReadContentFromFile(path));
  }
}

然后你可以做

MyObject object = MyObject.FromFile("/some/path");

这比使用常规构造函数更具可读性。

关于c# - 如何创建两个构造函数重载,都只采用一个字符串参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5000223/

相关文章:

c# - 命令未在按钮单击时触发

.net - 使用Web场进行身份验证

.net - 如何转义冒号 ( :) character while executing native SQL queries against an Informix database using NHibernate?

WCF - 在 DataContract 构造函数中实例化一个对象

c++ - 是否可以在 C++ 中将 std::map 与没有任何复制运算符的类一起使用?

c++ - 如何使用 new(std::nothrow) 使构造函数失败?

c# - Entity Framework Core 多对多更改导航属性名称

c# - 在这种情况下,我应该对所有可能的输入进行单元测试吗?

c# - SignalR accessTokenFactory 不将 token 传递给请求查询字符串

可以像内置类型一样直接分配常量值的 .NET 结构