dynamic参数传递问题

unclewuc 2016-10-15 04:05:35
项目资源目录


代码:
namespace Test
{
class Program
{
static void Main(string[] args)
{
var v = new
{
name = "wuc",
age = 24
};
GISCoder coder = new GISCoder();
coder.Method(v);
Console.ReadKey();
}
}
}

namespace Coder
{
public class GISCoder
{
public void Method(dynamic temp)
{
string name = temp.name;//断点 报错
string age = temp.age;
}
}
}
错误提示:


问题说明:项目中碰到的问题,简单的写了几行代码模拟了一下问题。上面的代码编译没有错误,但是运行时报错(错误提示见上图),为了没有拖慢项目的进度,我采取的是将Coder.dll的Method方法完全复制到Test项目下,发现可以运行,运行结果也对。问题是解决了,但没有想通,为什么?查了一些资料是关于var和dynamic以及匿名类的,依然没有找到可以解释的原因,求大神帮忙!!!!(备注:第一次发帖,积分不知道给多少,望见谅)
...全文
476 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
davidweil1 2017-11-29
  • 打赏
  • 举报
回复
转换成json串,再转回来就可以
unclewuc 2016-10-15
  • 打赏
  • 举报
回复
至于程序设计的问题就不用了说了,dll是别人设计的,我只是负责引用。我就是想弄明白为什么不行,拷贝一下就可以,之前想过是有可能匿名类不会能跨程序集,但是想不通的是匿名类编译之后不也是一个类吗,为什么不行
  • 打赏
  • 举报
回复
匿名类、在 Method 中根本没有可使用的动态特性,等等,我认为在这个帖子中都是一个次要的问题。 编程设计要“按照接口来设计”,这是一个基本的原则。你的设计应该基于接口,这是对于编译器非常靠谱的设计,不仅仅是避免“性能”问题,最主要是它是靠谱的。滥用动态特性是不好的。 按照接口设计,是个多么简单的原则。为什么不遵守呢?
xuzuning 2016-10-15
  • 打赏
  • 举报
回复
dynamic 不能跨解决方案
  • 打赏
  • 举报
回复
至于说你在 coder.Method(v); 代码旁边重写一个 Method 方法代码,这跟正规的模块式、工程式开发无关,就不用多考虑了。
Poopaye 2016-10-15
  • 打赏
  • 举报
回复
匿名类不能跨程序集,在Test里先定义一个类,或者使用ExpandoObject
  • 打赏
  • 举报
回复
var 是强类型的,跟弱类型无关。 dynamic 本来就是说“编译时不保证类型检验,在运行时才会在用户面前崩溃”。而且很多时候是在运行了几十遍之后、某些数据下才在用户面前丢人地崩溃!因此使用 dynamic 必须是靠谱的,你才使用,而不是胡乱使用。 如果你认为 dynamic 就是随便解析,那就错了。例如 dynamic 可以“动态”解析 ExpandoObject 类型的数据,这是因为它是靠谱的(底层动态特性是经过设计的),而不是随便的。
为什么人人都要学算法? 程序员对算法通常怀有复杂情感,算法很重要是共识,但是否每个程序员都必须学算法是主要的分歧点。很多人觉得像人工智能、数据搜索与挖掘这样高薪的工作才用得上算法,觉得算法深不可测。但是这些其实都不是具体的算法,而是一系列算法的集合。 所以说,好的代码从来离不开优秀的算法!算法不学不可! 本门课程为系列课程第一课,挑选出非常实用、高效、高频的算法:动态规划! 动态规划(Dynamic programming,简称DP)很多人都觉得是比较难以理解和掌握的一种算法,为了应付面试更多的时候程序员会选择直接死记硬背斐波那楔数列或者背包问题的源码,其实只要认真学习、彻底理解,动态规划并没有那么难。 学完即可掌握面试中90% 以上会问到的算法问题 ,实用性99.9999%! 这门课程,授课老师很厉害! 王硕-资深软件工程师,从事计算机相关课程教学多年,擅长Java、Python、数据结构和算法等课程,有丰富的计算机课程的教学经验。致力于企业级软件开发和计算机教育工作,具有索尼中国研究院和四大国有银行软件开发中心的工作经历。 著有编程畅销书《你也能看得懂的Python算法书》。 本课程实用性极强,边学边练!零基础也能轻松入门~ 在这门课中,我们保证你能收获到这些 1)透彻理解:到底什么是动态规划 2)细致讲解:挖矿工问题 3)细致讲解:爬台阶问题 4)细致讲解:背包问题 【注意】 1)现在购买至少享受40元优惠;2)课程教辅材料自助下载; ---------------------------------------------------------------

110,566

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧