※ ChatGPTを利用し、要約された質問です(原文:【.NET】コンストラクタをあとで呼出す方法)
【.NET】コンストラクタをあとで呼出す方法
このQ&Aのポイント
VB.NETでVB6向けの自作COMクラスライブラリを作成していますが、引数なしのコンストラクタが必要であり、StreamWriterクラスにはそれが用意されていないため困っています。
さまざまな手法を考えましたが、いくつかの制約があるため解決策が見つかりませんでした。
.NETを最近始めたので、他の言語では可能だったコンストラクタを後から呼び出すことが.NETではできないことを理解しています。
.NET初心者です。
今VB.NETでVB6向けの自作COMクラスライブラリを作成しています。
自作クラスはStreamWriterクラスのラッパークラスとしてStreamWriterと継承関係にあります。
COMは引数なしのコンストラクターを一つ用意しなければなりませんが、
StreamWriterクラスは引数なしのコンストラクタを用意されていないため困っています。
自作クラス自身もFileクラスのラッパークラスで引数として使う必要があるため
継承関係を維持してVB6に公開する必要があります。
この問題をなんとか解決する手法って存在するのでしょうか?
ちなみにほかに考えた手法は下記です。
・プロパティーに StreamWriterのインスタンスを用いて継承関係なしであとでinitメソッドを呼び出す
→Fileラッパークラスの引数でStreamWriter型に代入出来ないため不可
・StreamWriterを引数に取るメソッドの実装をあきらめる
→極力したくない
・StreamWriterラッパークラスの引数なしコンストラクタでStreamWriterクラスの引数ありコンストラクタを呼ぶ
→後でファイルのパスを指定する方法が見つからないため不可
他言語はそれなりにやってきたのでコンストラクターをあとで呼び出すなんて出来ないのはなんとなくわかるのですが何せ.NETを触り始めたのが最近なのでよろしくお願い致します。
お礼
なるほど、その手がありましたね。 StreamWriterラッパークラス内部でStreamWriterを持たせて、 StreamWriterを引数とするのコンストラクタを用意し、内部インスタンスに代入するということですね。 ありがとうございました。無事解決できました。