- PR -

VS.NETでVB.NET開発時のプロシージャ自動入力機能について

1
投稿者投稿内容
まよかん
常連さん
会議室デビュー日: 2003/08/10
投稿数: 27
お住まい・勤務地: 大阪
投稿日時: 2003-09-19 14:03
VS.NETでVB.NETを使って開発を実施する場合の
プロシージャ自動入力機能が予期せぬ動きをしてしまい困っています。
現在下記のような構成のプログラムを作成中です。

親クラス(C#)
public abstract class A
{
protected abstract void methodA();
}

子クラス(C#)
public class B : A
{
protected override sealed void methodA()
{
〜処理〜
}
}

孫クラス(VB.NET)
Public Class C
Inherits B
 Protected Overrides Sub methodA
 End_Sub
End Class

上記のように作成したとき、孫クラスのクラス宣言を記述し終えると
自動的にmethodAのクラス宣言文が出てきてしまいます。
親クラスでsealed指定しているので孫クラスでは継承できず
エラーになるのでオーバーライドされることはないのですが
自動的にクラス宣言文が出てきてしまうのを回避させたいと思っています。

このような要件を満たしたいとき、ロジックもしくはVS.NETの設定を
どのようにすればよろしいのでしょうか。

以上、よろしくお願いいたします。
ぢゃん♪
大ベテラン
会議室デビュー日: 2003/06/12
投稿数: 208
お住まい・勤務地: 都内
投稿日時: 2003-09-19 14:29
引用:

まよかんさんの書き込み (2003-09-19 14:03) より:
VS.NETでVB.NETを使って開発を実施する場合の
プロシージャ自動入力機能が予期せぬ動きをしてしまい困っています。


引用:

孫クラス(VB.NET)
Public Class C
Inherits B


うわっ、本当だ……
引用:

 Protected Overrides Sub methodA
 End_Sub


が勝手に挿入されちゃう……
引用:

'Protected Overrides NotOverridable Sub methodA()' は、'NotOverridable' として宣言されているため、'Protected Overrides Sub methodA()' で 'Protected Overrides NotOverridable Sub methodA()' をオーバーライドすることはできません。


ちなみにVS.NET2003の改良機能のようですね。VS.NET2002では、こうなりませんでした。
たしかに便利な機能だけど、ここまでくると過剰な改良だなぁ……

なお、[ツール]-[オプション]で、[テキストエディタ]-[Basic]-[VB固有]の、「InterfaceとMustOverrideメンバの自動挿入」をOFFにすると、こうならなくなりました。


[ メッセージ編集済み 編集者: ぢゃん♪ 編集日時 2003-09-19 14:31 ]
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-09-19 14:46
引用:

ぢゃん♪さんの書き込み (2003-09-19 14:29) より:
うわっ、本当だ……
引用:

 Protected Overrides Sub methodA
 End_Sub


が勝手に挿入されちゃう……


 ほぇ〜?“VB.NETだけ”で作った場合、挿入されませんでした。そういえばC#とVB.NETで継承したクラスのメンバをどう解決するかが違うんでしたっけ?
『クロス言語開発は本当にできるのか?』
http://www.atmarkit.co.jp/fdotnet/onepoint/onepoint01/onepoint01_01.html
この辺が関係しているかもしれませんね。


引用:

なお、[ツール]-[オプション]で、[テキストエディタ]-[Basic]-[VB固有]の、「InterfaceとMustOverrideメンバの自動挿入」をOFFにすると、こうならなくなりました。


それすると、必要なものも挿入されないんじゃ?
ぢゃん♪
大ベテラン
会議室デビュー日: 2003/06/12
投稿数: 208
お住まい・勤務地: 都内
投稿日時: 2003-09-19 15:08
引用:

Jittaさんの書き込み (2003-09-19 14:46) より:
 ほぇ〜?“VB.NETだけ”で作った場合、挿入されませんでした。そういえばC#とVB.NETで継承したクラスのメンバをどう解決するかが違うんでしたっけ?
『クロス言語開発は本当にできるのか?』
http://www.atmarkit.co.jp/fdotnet/onepoint/onepoint01/onepoint01_01.html
この辺が関係しているかもしれませんね。


なるほど、CLS仕様の隙間ですか……。
システム開発でチームごとに別々の(.NETでの)言語を割り当てる、なんてことをすると、かえって危険ですね。
(.NET Framework & J2EEのような)全く違うものを併用するのとは違って、ほとんど同じ動きをするだけに、違いをさほど意識しないままに……。

引用:

それすると、必要なものも挿入されないんじゃ?


もちろん、VS.NET2002程度まで逆戻りです


[ メッセージ編集済み 編集者: ぢゃん♪ 編集日時 2003-09-19 15:39 ]
1

スキルアップ/キャリアアップ(JOB@IT)