Конструкторы C# с одинаковыми сигнатурами параметров

Есть несколько возможностей .net - то, что считается элегантным, зависит csharp от сценария использования.

  • Статические c-sharp фабричные методы, которые .net-framework вызывают частный конструктор.

    static Thing thingWithFileName(string fileName)
    
  • Создайте visual-c# другой тип для одного из c-sharp параметров или используйте .net-framework встроенный. Вместо строкового dotnet имени файла вы можете использовать dot-net System.IO.FileStream. Это c-sharp также более безопасно по .cs-file типу, поскольку я не могу c#-language случайно передать неправильные c-sharp данные в неправильный статический .cs-file метод или поле.

  • Передайте .net-framework конструктору второй параметр, либо c#-language перечисление, либо логическое .cs-file значение, указывающее назначение c#.net первого параметра

    enum ThingType { FileName, ConnectionString }
    Thing(string str, ThingType type) ...
    
  • Подкласс .net-framework Thing, поэтому у вас есть dot-net ConnectionTypeThing и FileBackedThing

  • Полностью dot-net исключите Вещь, выполняющую visual-c# его подключение, и предоставьте .net заранее подключенные источники csharp данных. Итак, вы получаете

    Thing(InputStream dataSource)
    

    или .net что-то подобное.

Мои деньги .net за «элегантность» идут либо dotnet на первое, либо на второе .cs-file предложение, но мне нужно .net-framework больше контекста, чтобы быть visual-c# довольным любым выбором.

c#

.net

2022-05-10T10:27:19+00:00