私は主に WinForms 環境でプログラミングを行っており、特にコントロールを頻繁に使用していTreeView
ます。
その場合、私が開発したユーティリティ クラスがあり、これには多くの最も一般的な機能があります。たとえば、DataTable をテキスト ファイルに出力できる区切り文字列に変換したり、[名前を付けて保存] ダイアログをポップアップしたりします。ユーザーが選択したファイル名を返すか、指定されたツリービューからチェックされたツリーノードのリストを返します。
このユーティリティ クラスがあるので、それを ASP.Net アプリケーションに追加しようとしています。たとえば、TreeNode
WinForms と ASP の間でプロパティが異なるなど、多くの明らかなエラーが発生しています。
さて、私への最初の最も賢明な対応は、これらのさまざまな機能をすべて個別のユーティリティ ファイルとライブラリに分離し、必要に応じて/各アプリケーションに適用できるように追加することです。その利点とロジックを理解しています。しかし、私の質問は、クラス自体を作成する理論に関するものです。
たとえば、WinForms オブジェクトを含むクラスを作成する方法はありますか?エラーを発生させずに ASP アプリケーションに追加できますか? 言い換えれば、これらの関数は明らかにこのアーキテクチャでは機能しないため使用しませんが、このアーキテクチャに対してオブジェクトが間違っているように見え、コンパイラにそのファイルを受け入れさせるだけでエラーが表示されないようにする方法はありますか? - 次に、このアーキテクチャに適しているとわかっている関数を使用しますか?
私の Utility クラスの関数の愚かな例として、winForms では問題ないが、ASP ではエラーが発生します。
Public Shared Function CreateTemporaryNode(ByVal NodeName As String) As TreeNode
Dim TempNode As New TreeNode
TempNode.Name = NodeName
TempNode.Text = NodeName
Return TempNode
End Function
この場合'Name' is not a member of 'System.Web.UI.WebControls.TreeNode'
編集:明確にするために-この特定の状況での悪いプログラミング慣行を理解しています。私の質問は、使用しない関数のライブラリを追加する必要なく、複数のアーキテクチャ内でクラスを使用できるように、ライブラリが欠落している関数をコンパイラから「隠す」方法があるかどうかを学習しようとすることです /必要です。
この質問が理にかなっていることを願っています。あなたの専門知識に感謝します。