2013-12-14 1 views
2

PCL 플러그인에는 IFile이라고하는 인터페이스가 있습니다. 내 다양한 ​​플랫폼에서 PlatformFile. Mvx.RegisterType을 사용하여 등록하면 Mvx.Resolve가 Platformfile 인 IFile을 제공합니다. PlatformFile 생성자 중 하나는 매개 변수가 말을 할 수있는 이름 그래서MvvmCross의 IOC 생성자에 매개 변수를 전달하는 방법은 무엇입니까?

공공 PlatformFile (캐릭터 이름)

어떻게 Mvx.Resolve하고 이름을 전달합니까?

답변

1

해당 클래스의 새 인스턴스를 만들 때 PlatformFile 생성자를 호출 한 다음 Mvx.RegisterSingleton을 호출하여 Singleton으로 등록 할 수 있습니다. Mvx.Resolve를 호출하면 클래스의 해당 인스턴스를 해결할 수 있습니다.

3

당신은 당신이 시도하는 것처럼 이것을 할 수 없습니다.

IoC/Service Location은 C# 인터페이스 위에 구축됩니다.

인터페이스는 contracts을 속성 및 메서드와 관련하여 제공하지만 이 아니고에는 생성자가 포함되어 있습니다.


이런 종류의 시나리오에 수직 접근은 IFileFactory위한 인터페이스를 제공하는 것이다 - 이것은 공장 다음 IFile를 반환하는 Create 방법을 제공 할 수있다 - 예를 들어 https://github.com/MvvmCross/MvvmCross-SQLite/blob/master/Sqlite/Cirrious.MvvmCross.Community.Plugins.Sqlite/BaseClasses.cs - - IOC는 더 많은가 https://github.com/MvvmCross/MvvmCross/wiki/Service-Location-and-Inversion-of-Control

를 참조 IOC의 컨테이너

public interface ISQLiteConnectionFactory 
{ 
    ISQLiteConnection Create(string address); 
} 

함께 ISQLiteConnectionFactory 객체를 등록

public interface IFileFactory 
    { 
     IFile Create(string name); 
    } 

(예)을 MvvmCross SQLite는 플러그인 취해진 접근법
관련 문제