簡體   English   中英

Autofac使用開放式通用類解析開放式通用接口

[英]Autofac Resolve Open Generic Interface with Open Generic Class

所以我有一個接口和類:

public interface IMyInterface<T> where T : ISomeEntity {}

public class MyClass<T> : IMyInterface<T>
    where T : ISomeEntity {}

我會有一些課程要求它:

public class SomeClass : ISomeClass
{
    public SomeClass (IMyInterface<AuditEntity> myInterface) {}
}

我已經做了各種各樣的事情來讓它注冊開放的通用接口和類沒有運氣。

我只想說:

container.RegisterType(typeof(MyClass<>)).As(typeof(IMyInterface<>));

如果我必須通過並明確地執行以下操作,那將是令人討厭的:

container.RegisterType<MyClass<AuditEntity>>().As<IMyInterface<AuditEntity>>();

這不應該是微不足道的嗎?

您必須使用RegisterGeneric方法,請參閱注冊概念 - 打開通用組件

這樣的東西應該有效:

builder.RegisterGeneric(typeof(MyClass<>)).As(typeof(IMyInterface<>)); 

是的,它對於container.RegisterGeneric來說是微不足道的:

container.RegisterGeneric(typeof(MyClass<>)).As(typeof(IMyInterface <>));

您似乎也在問題的示例中切換了您的界面和類。 注冊應該從想要注冊的類型(例如MyClass)開始,然后是要注冊的類型(例如IMyInterface)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM