接口未通过依赖项注入实现

时间:2019-05-22 05:16:50

标签: c# .net

我有一个简单的计数器应用程序,我想通过实现度量标准接口向其中添加一个度量标准,但是在使用该度量标准时,我会收到未实现的异常。

using System;
using Foo.Metrics; // This contains the interface "IFooMetrics" and class "MetricCounter"

namespace FooService
{
    class Program
    {
        private static MetricCounter _myMetric;

        public Program(IFooMetrics fooMetrics)
        {
            _myMetric = fooMetrics.CreateMetric();
        }

        static void Main(string[] args)
        {
            var counter = 0;
            var max = args.Length != 0 ? Convert.ToInt32(args[0]) : -1;

            while (max == -1 || counter < max)
            {
                counter++;
                Console.WriteLine($"Counter: {counter}");

                _myMetric.AddToCounter();
                Console.WriteLine("Metric added");

                System.Threading.Tasks.Task.Delay(1000).Wait();
            }
        }
    }
}

不幸的是,我对依赖注入的知识很少,所以我不明白为什么它不起作用。

我只是希望正确地初始化该指标,但是我不确定自己在做什么或做错了。

1 个答案:

答案 0 :(得分:0)

例如,使用简单注射器nuget包很容易。这是简单注射器simple injector doc

的文档

这是一个简单的例子 example

首先,您必须创建实现接口IFooMetrics的MetricCounter类。 然后创建一个以该接口为例在类中注册的容器

private static readonly Container container;



static Program()
{
    container = new Container();

    container.Register<IFooMetrics, MetricCounter >();


    container.Verify();
}

然后在主

var service = container.GetInstance<IFooMetrics>();
service.YourMethod();