一个非常基本的问题,请考虑以下方法:
public object Foo(object bar) {... }
对比
public dynamic Bar(dynamic bar) {... }
虽然实际上我没有这样的方法签名,但为了简洁起见,这个例子简化了两件事:方法参数中的“动态 vs 对象”关键字和返回。
这两种方法有什么区别,它会产生相同的 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>
. 任何想法?