私はAPIを備えたASP.NET Core MVCプロジェクトを持っています。IMemoryCacheコントローラ外部の依存性注入
次に、インフラストラクチャと同じソリューション内にクラスライブラリがあります。私はAPIコントローラで使用する場合は
私のAPIはUserRepository
クラスで、クラスライブラリインフラストラクチャ内のリポジトリメソッドを呼び出します。
private static IMemoryCache _memoryCache;
public Api(IMemoryCache cache) //Constructor
{
_memoryCache = cache;
}
私はコントローラにキャッシュを使用することができます。 しかし、インフラストラクチャライブラリ内のUserRepository
クラスで使用する同じ参照をASP.NETに注入したいとします。
私はAPIから呼び出すことができますこの方法では、
UserRepository.GetUser(Id);
とUserRepositoryクラス内のようなメソッド:
私はUserRepository
に
IMemoryCache
を注入するASP.NETを伝えることができますどのように
namespace Infrastructure
{
public class UserRepository
{
public static User GetUser(Id)
{
**//I want to use the Cache Here**
}
}
}
コントローラでない場合でもクラスですか?
はシングルトン(つまり、インスタンスを作成し、(ツーリングメソッドと拡張メソッド以外の)その静的なクラスにご注意くださいDIを経由するのではなく)、Active Recordパターンは** C#の世界では非常に推奨されていません**。それらはすべて、反パターンや悪い習慣とみなされます。 – Tseng