1

作業中のプロジェクトに動的 ExpandoObjects を使用したいのですが、正しい構成と思われる構成でコンパイルされません。

私が見る限り、Mono は dynamic キーワードと ExpandoObject をサポートしているため、構成の問題であるか、Mono for Android では何らかの形でそれが不可能であると想定しています。

ただし、使用しようとすると、Visual Studio 2010 で次のエラー メッセージが表示されます。

エラー 3 動的式のコンパイルに必要な型が 1 つ以上見つかりません。Microsoft.CSharp.dll と System.Core.dll への参照がありませんか? D:\HMI\ExpandoTest\ExpandoTest\Activity1.cs 34 17 ExpandoTest

エラー 1 定義済みの型 'Microsoft.CSharp.RuntimeBinder.Binder' が定義されていないか、ExpandoTest がインポートされていません

簡単なテストコードは次のとおりです。

using System;
using System.Dynamic;
using System.Collections.Generic;
using System.Runtime;

using Android.App;
using Android.Content;
using Android.Runtime;
using Android.Views;
using Android.Widget;
using Android.OS;

namespace ExpandoTest
{
    [Activity (Label = "ExpandoTest", MainLauncher = true, Icon = "@drawable/icon")]
    public class Activity1 : Activity
    {
        protected override void OnCreate (Bundle bundle)
        {
            base.OnCreate (bundle);

            // Set our view from the "main" layout resource
            SetContentView (Resource.Layout.Main);

            // Test the expando stuff
            TestExpando();
        }

        private void TestExpando()
        {
            dynamic obj = new ExpandoObject();
            int x = 10;
            obj.x = x;    // This line and the next one generate compiler errors
            obj["X"] = x;
        }
    }
}
4

1 に答える 1

3

コンパイラ エラー メッセージに示されているように、dynamic キーワードを使用するには、Microsoft.CSharp アセンブリへの参照を追加する必要があります。

Microsoft.CSharp への参照を追加

于 2012-06-15T02:56:24.130 に答える