プライベート デフォルト コンストラクターとパラメーターを持つパブリック コンストラクターを使用してクラスを定義する場合、プライベート コンストラクターにアクセスするにはどうすればよいですか?
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();
}
}
では、プライベート コンストラクターにアクセスするにはどうすればよいでしょうか。
ありがとうございました
編集:
これを行う理由は、ビジネス クラスの 1 つのテストを作成したかったが、このクラスのコンシューマーがオブジェクトを誤ってインスタンス化できないようにしたかったからです。私はそれをテストしているので、どのような状況でテストが失敗するかを知っています (願っています!)。私はまだテスト中なので、私の考えは「間違った方法」だったかもしれませんし、そうでなかったかもしれません。
テスト戦略を変更して、このクラスのコンシューマと同じように処理を行うようにしました。つまり、パブリック メソッドを呼び出し、パブリック メソッドに問題がない場合は、プライベート メソッドに問題がないことを前提としています。私はまだプライベートな方法をテストしたいと思っていますが、私の上司は成果物で首をかしげています:-(