动态不包含项目引用中属性的定义 [英] dynamic does not contain a definition for a property from a project reference
本文介绍了动态不包含项目引用中属性的定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我发现错误:
'object'不包含'Title'的定义
'object' does not contain a definition for 'Title'
所有代码也在 github
我有一个ConsoleApplication1看起来像这样
I have a ConsoleApplication1 that looks like this
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Movie m = new Movie();
var o = new { Title = "Ghostbusters", Rating = "PG" };
Console.WriteLine(m.PrintMovie(o));
}
}
}
和电影。 cs
public class Movie : DynamicObject
{
public string PrintMovie(dynamic o)
{
return string.Format("Title={0} Rating={1}", o.Title, o.Rating);
}
}
它可以从SAME项目中正常工作,但如果我添加ConsoleApplication2引用ConsoleApplication1并添加完全相同的代码
it works fine from the SAME project, but if I add ConsoleApplication2 with a reference to ConsoleApplication1 and add the Exact same code
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Movie m = new Movie();
var o = new { Title = "Ghostbusters", Rating = "PG" };
Console.WriteLine(m.PrintMovie(o));
}
}
}
我收到错误: / p>
I get an error:
'object'不包含'Title'的定义**
'object' does not contain a definition for 'Title'**
即使它在动态对象中。
- o.Title'o.Title'抛出一个异常类型Microsoft.CSharp.RuntimeBinder.RuntimeBinderException动态{Microsoft.CSharp.RuntimeBinder.RuntimeBinderException}
这是一个屏幕截图:
Here is a screen shot:
我在做某事
推荐答案
您需要使用ExpandoObject
You need to use an ExpandoObject
dynamic o = new ExpandoObject();
o.Title = "Ghostbusters";
o.Rating = "PG";
Console.WriteLine(m.PrintMovie(o));
这篇关于动态不包含项目引用中属性的定义的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文