編集: 共変ジェネリックはまだサポートされていないようです。次のリリースでそれを確認するには、Xamarinに電子メールでこの機能をリクエストしてください。Monodroidジェネリックは共変しませんか?
次のコードはエラーを示しています(linq文)。同じコードがMicrosoft clr c#4.0で正常に動作します。
エラー:
Cannot implicitly convert type 'System.Collections.Generic.IEnumerable<LinqTest.Person>' to 'System.Collections.Generic.IEnumerable<LinqTest.Entity>'. An explicit conversion exists (are you missing a cast?)
コード:私は修正または私は何かが欠けています
[Activity(Label = "LinqTest", MainLauncher = true, Icon = "@drawable/icon")]
public class Activity1 : Activity {
protected override void OnCreate(Bundle bundle) {
base.OnCreate(bundle);
var names = new List<string> {
"Joe",
"Bob",
"Jim",
"Jane"
};
IEnumerable<Entity> query =
from e in names
select new Person() {Name = e};
SetContentView(Resource.Layout.Main);
var button = FindViewById<Button>(Resource.Id.MyButton);
button.Click += delegate {
button.Text = string.Format("{0}", query.Count());
};
}
}
public class Entity {
public string Name { get; set; }
}
public class Person : Entity {
public string Workplace { get; set; }
}
public class Animal : Entity {
public string FurColour { get; set; }
}
アム?もしそうなら、これをリファクタリングするための推奨事項はありますか?
また、そうであれば、これは単変量 - 共変一般的サポートのための正式な機能要求を考慮してください。 :)
ありがとうございました。
ありがとう - 私はこの機能を楽しみにしています。 – IUnknown