FSharp ライブラリに挿入しようとすると解決エラーが発生しますが、CSharp ライブラリでは解決エラーが発生しません。
私は3つのプロジェクトを持っています:
- csharp の主なアプリケーション
- コンストラクターが正常にインスタンス化される IUnityContainer を必要とするクラスを含む CSharp プロジェクト
- エラーでインスタンス化できない IUnityContainer をコンストラクターが必要とするクラスを含む FSharp プロジェクト
依存関係の解決に失敗しました。タイプ = "ModuleDBGraphFS.ModuleEntityGraphFS"、名前 = "(none)"。例外が発生しました: 解決中。例外は次のとおりです。 InvalidOperationException -現在の型である Microsoft.Practices.Unity.IUnityContainer はインターフェイスであり、構築できません。タイプマッピングがありませんか?
例外発生時のコンテナは次のとおりでした。
ModuleDBGraphFS.ModuleEntityGraphFS,(none) の解決 コンストラクター ModuleDBGraphFS.ModuleEntityGraphFS のパラメーター「コンテナー」の解決(Microsoft.Practices.Unity.IUnityContainer コンテナー、Microsoft.Practices.Prism.Regions.IRegionManager マネージャー) Microsoft.Practices.Unity.IUnityContainer,(none) の解決)
最初のプロジェクトのアプリケーション クラス (WPF プロジェクト、prism を追加、app.xaml から startupuri を削除、bootstrapper のコード ビハインドを追加)
namespace WpfApplication
{
class Bootstrapper : UnityBootstrapper
{
protected override DependencyObject CreateShell()
{
return this.Container.Resolve<Shell>();
}
protected override void InitializeShell()
{
base.InitializeShell();
App.Current.MainWindow = (Window)this.Shell;
App.Current.MainWindow.Show();
}
protected override void ConfigureModuleCatalog()
{
base.ConfigureModuleCatalog();
ModuleCatalog moduleCatalog = (ModuleCatalog)this.ModuleCatalog;
// OK moduleCatalog.AddModule(typeof(ModuleDBGraph.ModuleEntityGraph));
// KO moduleCatalog.AddModule(typeof(ModuleDBGraphFS.ModuleEntityGraphFS));
}
}
}
C# プロジェクトで
public class ModuleEntityGraph : IModule
{
private IUnityContainer _container;
private readonly IRegionManager _manager;
public ModuleEntityGraph(IUnityContainer container, IRegionManager manager)
{
_container = container;
_manager = manager;
}
void IModule.Initialize()
{
}
}
F# プロジェクトで
type ModuleEntityGraphFS(container:IUnityContainer, manager:IRegionManager) =
do printfn "hi"
interface Microsoft.Practices.Prism.Modularity.IModule with
member x.Initialize() =
do ()