내 주요 프로젝트의 구체적인 형식 라이브러리를 참조하지 않도록하기 위해 노력하고있어,하지만 난이 오류 받고 있어요에 대한 명명 된 인스턴스 '기본'나는했습니다없음 기본 인스턴스하거나 요청 플러그인 타입
No default instance or named instance 'Default' for requested plugin type StackExchangeChatInterfaces.IClient
1.) Container.GetInstance(StackExchangeChatInterfaces.IClient ,{username=; password=; defaultRoomUrl=; System.Action`2[System.Object,System.Object]=System.Action`2[System.Object,System.Object]})
을 내 컨테이너 설정이과 같이, 어셈블리를 검색하도록 :
var container = new Container(x =>
{
x.Scan(scan =>
{
scan.AssembliesFromApplicationBaseDirectory();
scan.ExcludeNamespace("StructureMap");
scan.WithDefaultConventions();
scan.AddAllTypesOf<IMessageHandlers>();
});
//x.For<IClient>().Use<Client>(); //GetInstance will work if this line is not commented out.
});
내가 인스턴스를 얻을 할 때 나는 오류, 인스턴스를 얻기를위한 내 코드는 여기에 있습니다 :
chatInterface = container
.With("username").EqualTo(username)
.With("password").EqualTo(password)
.With("defaultRoomUrl").EqualTo(roomUrl)
.With<Action<object, object>>(delegate(object sender, object messageWrapper)
{
string message = ((dynamic)messageWrapper).Message;
Console.WriteLine("");
Console.WriteLine(message);
foreach (var item in messageHandlers)
{
item.MessageHandler.Invoke(message, chatInterface);
}
}).GetInstance<IClient>();
구체적인 클래스를 인터페이스에 명시 적으로 매핑하면 모든 것이 늠름한 dory로 작동하지만 이는 내가 수행하고 싶지 않은 Client
이있는 프로젝트를 참조해야한다는 것을 의미합니다.
나는 오늘 저녁에 집에 갈 때 이것을 시험해 볼 것이다. –
이 기능이 추가 되었다면, registry.For (typeof (IClient)) 다음에 'ClientConvention.Process'에 생성자 인수를 설정하는 것뿐입니다.이 질문과 같이 사용하십시오 : http : // stackoverflow .com/questions/5698274/structuremap-constructor-arguments –
* IClient *를 해결하는이 방법이 효과가 없다고 말하는 것입니까? = 용기 .With ("이름"). EqualTo가 (사용자 이름) .With ("비밀번호"). EqualTo가 (암호) .With ("defaultRoomUrl"). EqualTo가 (roomUrl) .With <액션