5

C# .net では、 を使用してコードを動的に実行できますSystem.Codedom.Provider。同じように、Monotouch (iPhone/iPad) でコードを動的に実行する可能性があります。

前もって感謝します、

4

2 に答える 2

6

ありえない。1 つ目は、Xamarin.iOS の実際の動作の制限(通常の .NET アプリのように動作するのではなく、プレーンな iOS アプリにコンパイルされる) と、Apple Appstoreのセキュリティモデルのためです。結局のところ、動作がいつでも変更される可能性がある場合、アプリが安全である、または規制に準拠していると宣言することはできません。

于 2013-03-29T13:48:12.247 に答える
6

Xamarin.iOS バージョン 7.2 以降、C# の動的機能に対する基本的なサポートがいくつかあります。リリースノートから:

実験的: C# 動的サポート。Xamarin.iOS で C# ダイナミックを使用できるようにしましたが、この機能は非常に複雑であり、他のプラットフォームで実行する動的コードや Xamarin.iOS で実行したい動的コードをアーリー アダプターからお知らせいただく必要があります。

匿名型の動的アクセスを正常にコンパイルして実行しました。

 dynamic d = new { name = "x" };
 tmp = d.name;

現在、Microsoft.CSharp.dll を依存関係として追加する必要があります。追加しないと、次のような例外が発生します。

Error CS0518: The predefined type `Microsoft.CSharp.RuntimeBinder.Binder' is not defined or imported (CS0518) (DynamicSupportOniOS)
Error CS1969: Dynamic operation cannot be compiled without `Microsoft.CSharp.dll' assembly reference (CS1969) (DynamicSupportOniOS)

残念ながら、現在、ExpandoObject も Json.Net の JObject も機能しません。

dynamic x = new ExpandoObject();
x.NewProp = "demo"; // this still works
Console.WriteLine(x.NewProp); // fails with Xamarin.iOS 7.2

dynamic d = JObject.Parse("{number:1000, str:'string', array: [1,2,3,4,5,6]}");
Console.WriteLine(d.number); // fails with Xamarin.iOS 7.2

これについては、 https ://bugzilla.xamarin.com/show_bug.cgi?id=20081とhttps://bugzilla.xamarin.com/show_bug.cgi?id=20082の 2 つのバグ レポートを作成しました。

于 2014-05-28T08:17:27.923 に答える