最近、私はC#4.0(DynamicObject、ExpandoObjectなど)で導入された派手な新しい動的キーワードを使用して検討してきました。新しい紹介ではいくつかの用途(およびいくつかの落とし穴)を特定できます私のプロジェクト、そしてこの質問のために、私は後でバインドされた文字列ベースのインデックス付きコレクションをクリーンアップし、より安全なものにすることを検討しています。すべてが順調と良い動的実行時オブジェクトの作成:IntelliSenseを維持しますか?
Car car1 = CARWarehouse1.Honda
これは(CARWarehouse1は今DynamicObjectsベースを拡張している)
Car car1 = CARWarehouse1["Honda"];
そして、私が今できるダイナミクスWITH、およびから:
だから、ダイナミクス前に私が持っていました私は私が望んでいたものを達成したように見えますが、私は持っていますか? 私はコンパイル時にどちらのメソッドでも、参照している車のタイプを誤って入力する必要がありますが、コンパイラには問題はありませんが、実行時に問題が発生します。
そこで、私が本当に必要なのは時間のプロパティのチェック、およびインテリセンスのサポートをコンパイルしています。だから私はそれをすることができますか?
私はこの能力を持っているが、このような部品番号などのライブラリアウトがあることを知っており、ReSharperのはインテリセンス内のサポートのいくつかの並べ替えを与えるが、私はより丸みを帯びた解決策を探しています。
すべてのアイデアは、大きな、小さな、簡単または複合体は歓迎されています。
あなたCARWarehouse1(ところで奇数総額は)*それは 'Honda'ではなく、' Honder'を持っていることをコンパイル時に*を知っていますか?そうでない場合、コンパイラはどのようにして文句を言うことができますかもしそうなら、どうして静的なタイピングを使っていないのですか? –
ええ、プロジェクトで実際にCARWarehouse1は使用されていません。その例は、データベースがXMLやXMLなどを介して実行時にCarWarehouseに追加されるため、車に強く入力する必要はありません。あなたの言っていることが分かりますが、Intellisenseが実際にメソッドを実行し、動的プロパティを返すための方法があることを期待していました。 linqエンティティの場合のように、コード生成のルートを調べることに満足しています。可能なことを知りたいだけです –
どのデータベースを見るのですか?あなたのプロダクション?テスト?他に何か?あなたがコンパイルしている間に本当に*データベース呼び出しをしたいですか?あなたがデータベースを持っているネットワークではないなら...ここで間違っているかもしれない事を考えてみてください... –