プライベートのXamarin開発ではUnityContainerを使ってます。
UnityというとゲームエンジンのUnityを思い浮かべる方が多いでしょうし、私自身もそうでした。
職場で導入された影響で使い始めたのですが、UnityContainerは依存性の注入を行うための仕組みです。
どうしてもiOSのAPIを使わざるを得ないケースでUnityContainer経由で処理し、同じビジネスロジックで処理するといったことをやっています。
そのUnityContainerを使っていて、私がよくやりがちな失敗を。
CS0308 非ジェネリック メソッド 'IUnityContainer.Resolve(Type, string, params ResolverOverride[])' は型引数と一緒には使用できません。
下記のようなスクリーンショットを取る処理なのですが、処理をどこまで調べたところで問題は見つかりません。
ContainerSource.Container.Resolve<IScreenShotService>().Capture(); ContainerSource.Container.Resolve<IDialogService>().ShowDialog(this , "スクリーンショットを取りました。", "完了" , DialogButton.Ok, DialogIcon.Information , result => { });
原因としてはExtensionの関数を使っているので
using Microsoft.Practices.Unity;
using処理が必要です。
私がただのコピペソースをしているのがそもそもまずいのですが。