本当に初心者に優しいと思いますか?私は、学ぶチャンスをつみ取っていると思います。それは優しさではないと考えます。
あるいは、いつまで初心者でいるのですか?または、いつまでも初心者のままとどまっているつもりですか?
このスレッド、「ブラウザを閉じる時に通知するURLをサーバー側でアプリケーション毎に設定して、閉じる時に通知して欲しい 」、「金額TextBoxのOnblurで自動的にカンマを入れてくれるプロパティがほしい。 」の3つからは、単に探すのが面倒だから、探す手間を惜しむことを「初心者に優しい」と表現しているように感じます。
他の言い方をすると、いきなり「要望」としてあげるようなことではなく、まず「やりたいこと」を実現する手順を考える。手順を実装する手段を考える。この手段について「楽にする方法はないか」と、他の開発者に尋ねる。その方法で納得できなくてはじめて、「要望」としてあげることではないでしょうか。(そういうの、他にも投稿されていますね)
前にも書いたように、パーシャル クラスでキャスト動作をオーバーライドすればいいのではないですか?
[code]
partial class BDataRow
{
public static explicit operator ADataRow(BDataRow b) {
ADataRow a = new ADataRow();
a.ColumnA = b.Column5;
a.ColumnB = b.Column4;
...
return a;
}
}
// 使うとき
BDataRow B = (BDataRow) A; // A は ADataRow のインスタンス
tableB.Rows.Add(B);
[/code]
こんな感じ?使ったことないからわかんないや。
で、「DataRow として入力、または出力して、文字列配列で列名を指定する」というのは却下。そんなの、全然優しくない。バグの温床になるだけ。
列名が変わったのにコードを修正するのを忘れていたら、コンパイルは通ってしまいます。そして実行時にエラーになります。このエラーを訂正する方が、あらかじめ「この列をこの列に入れてね」と宣言するより難しいでしょう。
さらに、そんなにあっちこっちのテーブルにコピー配布しなければならない作り(データベースの設計)自体がおかしいのでは?
このようにすることで、動的解釈ではないのでコンパイル時にミスが検出できるため、配列で列を指定するより安全です。
配列で指定するなら、変換をしようとする箇所で配列を書いてやる必要があります。しかし、キャスト動作にしておけばその必要もありません。
少なくとも配列を指定するために1回はコーディングが必要なので、手間は変わらないと思います。
参考リンク:
変換キーワード (C# リファレンス)