非常に基本的な質問です。次の方法を検討してください。
public object Foo(object bar) {... }
対
public dynamic Bar(dynamic bar) {... }
実際には、このようなメソッド シグネチャはありませんが、この例では簡潔にするために単純化して、メソッド パラメーターの「dynamic vs object」キーワードと return の 2 つのことを示しています。
これら 2 つの方法の違いは何ですか? 同じ IL またはパフォーマンスへの影響を生成しますか?
参照/ワークスルー/例に基づいて、ダイナミックが追加されたダイナミック機能を備えたオブジェクトのようであることを伝えると、どちらも同じものであると思いますが、戻り値に別のダイナミック プロパティ/メソッドを追加する場合のように、使用法に基づいてのみ異なります。しかし、考慮すべき別の重要な点があるかどうかはまだ疑問です。
上記のようなメソッドを持つクラスがあり、Bar
以下のようなメソッド シグネチャを持つインターフェイスを実装している場合 (またはその逆)、コンパイラは何も文句を言わないことに注意してください。
object Bar(object bar);
約 3 年の存在の後、Web API によって消費される動的リポジトリを作成し、(動的) JSON を生成するなど、プロジェクトで動的機能を使用する機会があります。
public interface IRepository
{
IEnumerable GetAll(string entityName, int skip, int take);
int Count(string entityName);
dynamic GetById(string entityName, int key);
void Add(string entityName, dynamic entity);
void Remove(string entityName, int key);
}
エンティティが具体的ではなくentityName
、db 列で定義されている場合。IEnumerable
またはのいずれかを使用することも検討していますIEnumerable<dynamic>
。何か考えはありますか?