Connection
オブジェクトをサブクラス化して、トークンを追加しAuthenticatedConnection
て と同じように機能するを作成しようとしています。Connection
簡単な解決策は、サブクラス コンストラクターとの接続を「ラップ」して渡すことです。
パラメータの保護されたメンバーにアクセスできないため、このソリューションは壊れているようです。これは、基本コンストラクターを呼び出すことができないことを意味します。コンストラクターをそのようにラップできるようにコンストラクターを実装する方法はありますか? 例えば:new AuthenticatedConnection("token", existingConnection)
これが現在の(壊れた)実装です。コンパイルエラーは次のとおりです。Cannot access protected member 'Connection._client' via a qualifier of type 'Connection'; the qualifier must be of type 'AuthenticatedConnection' (or derived from it)
class Connection
{
// internal details of the connection; should not be public.
protected object _client;
// base class constructor
public Connection(object client) { _client = client; }
}
class AuthenticatedConnection : Connection
{
// broken constructor?
public AuthenticatedConnection(string token, Connection connection)
: base(connection._client)
{
// use token etc
}
}