{"type":"rich","blog_title":"present","image_url":null,"url":"https://tnakamura.hatenablog.com/entry/2022/04/15/decorator","width":"100%","author_name":"griefworker","blog_url":"https://tnakamura.hatenablog.com/","provider_name":"Hatena Blog","title":"DI \u30b3\u30f3\u30c6\u30ca\u306b\u767b\u9332\u6e08\u307f\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u88c5\u98fe\u3059\u308b","published":"2022-04-15 18:45:59","version":"1.0","html":"<iframe src=\"https://hatenablog-parts.com/embed?url=https%3A%2F%2Ftnakamura.hatenablog.com%2Fentry%2F2022%2F04%2F15%2Fdecorator\" title=\"DI \u30b3\u30f3\u30c6\u30ca\u306b\u767b\u9332\u6e08\u307f\u306e\u30b5\u30fc\u30d3\u30b9\u3092\u88c5\u98fe\u3059\u308b - present\" class=\"embed-card embed-blogcard\" scrolling=\"no\" frameborder=\"0\" style=\"display: block; width: 100%; height: 190px; max-width: 500px; margin: 10px 0px;\"></iframe>","categories":[".NET","ASP.NET Core","C#"],"author_url":"https://blog.hatena.ne.jp/griefworker/","provider_url":"https://hatena.blog","height":"190","description":"\u8abf\u67fb\u76ee\u7684\u3067\u3001ASP.NET Core MVC \u3068\u304b\u304c DI \u30b3\u30f3\u30c6\u30ca\u306b\u767b\u9332\u3057\u305f\u30b5\u30fc\u30d3\u30b9\u306b\u51e6\u7406\u3092\u631f\u307f\u8fbc\u307f\u305f\u3044\u3053\u3068\u304c\u3042\u308b\u3002\u305d\u3093\u306a\u6642\u306f\u3001\u4e0b\u8a18\u306e\u3088\u3046\u306a\u30af\u30e9\u30b9\u3068\u62e1\u5f35\u30e1\u30bd\u30c3\u30c9\u3092\u7528\u610f\u3002 internal class Decorator<TService> { public TService Instance { get; set; } public Decorator(TService instance) { Instance = instance; } } internal class Decorator<TService, TImpl> : Decorator<TService> where TImpl\u2026"}