Если я определяю класс с частным конструктором по умолчанию и общедоступным конструктором с параметрами, как я могу получить доступ к частному конструктору?
public class Bob
{
public String Surname { get; set; }
private Bob()
{ }
public Bob(string surname)
{
Surname = surname;
}
}
Я могу получить доступ к частному конструктору с помощью статического метода в классе следующим образом:
public static Bob GetBob()
{
return new Bob();
}
Я думал, что могу получить доступ к частному конструктору с помощью метода расширения, поскольку (согласно моему пониманию) методы расширения транслируются таким образом, что они кажутся статическими методами класса, но я не могу:
static class Fred
{
public static Bob Bobby(this Bob bob)
{
return new Bob();
}
}
Итак, как я могу получить доступ к закрытому конструктору?
Спасибо
Причина, по которой Я хотел сделать это потому, что хотел создать тесты для одного из наших бизнес-классов, но не позволять потребителю этого класса иметь возможность создавать экземпляр объекта неправильно. Тестирую, поэтому знаю (надеюсь! ) при каких обстоятельствах тесты не пройдут. Я все еще тестирующий n00b прямо сейчас, так что моя идея могла быть или не быть "неправильным способом" делать что-то.
Я изменил свою стратегию тестирования, чтобы просто делать что-то так, как это сделал бы потребитель этого класса. , т.е. вызов общедоступных методов и, если общедоступные методы в порядке, предполагая, что частные методы в порядке. Я бы по-прежнему предпочел протестировать частные методы, но мой босс дышит мне в шею над результатом: - (