动态不包含项目引用中属性的定义 [英] dynamic does not contain a definition for a property from a project reference

查看:134
本文介绍了动态不包含项目引用中属性的定义的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我发现错误:


'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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆