c# - LightInject GetInstance 返回不能与类型参数一起使用

标签 c# dependency-injection inversion-of-control light-inject

我是依赖注入(inject)新手,我发现 LightInject 可以启动。 所以我创建了 2 个接口(interface)并将这些接口(interface)实现为 2 个类。现在,我想获取 Payment 的实例,但编译器一直说非泛型方法“ServiceContainer.GetInstance(Type) 不能与类型参数一起使用。

我的接口(interface)是在不同的文件中实现的。我尝试了这些人所说的方式( Getting Started with LightInject )并且工作正常。但我认为,不知何故,由于我的接口(interface)和类位于不同的文件中,它不起作用,我不知道为什么。

我的代码是这样的。契约(Contract)

namespace ConsoleApp1.Interfaces
{
    public interface IContract
    {
        int Discount();
    }
}

付款方式:

namespace ConsoleApp1.Interfaces
{
    public interface IPayment
    {
        void Pay();
    }
}

疯狂合约:

namespace ConsoleApp1.Classes
{
    public class CrazyContract: IContract
    {
        public int Discount()
        {
            return 3;
        }
    }
}

付款和更重要的类别:

namespace ConsoleApp1.Classes
{
    public class Payment: IPayment
    {
        private readonly IContract _contract;

        public Payment(IContract contract)
        {
            _contract = contract;
        }

        public void Pay()
        {
            Console.WriteLine("Discount {0}", _contract.Discount());
        }
    }
}

我的 main 返回错误:

using ConsoleApp1.Classes;
using ConsoleApp1.Interfaces;
using System;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            var container = new LightInject.ServiceContainer();

            container.Register<IPayment, Payment>();
            container.Register<IContract, CrazyContract>();

            var p = container.GetInstance<IPayment>(); // the error is here

        }
    }
}

和错误:

error CS0308: The non-generic method 'ServiceContainer.GetInstance(Type)' cannot be used with type arguments

正如你们所看到的,我正在使用构造函数注入(inject),如果你们中有人能解释我做错了什么,我会非常高兴。谢谢!

最佳答案

我找到了解决问题的方法。

我们应该明确表明我们需要 LightInject 包。

所以,只需输入这段代码

using LightInject;

我真的不知道为什么,但这有效

关于c# - LightInject GetInstance 返回不能与类型参数一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48979773/

相关文章:

Java:我被困在单例工厂中,并且想要改进我的方法

java - 使用 Guice 多次绑定(bind)到同一个提供程序实例

c# - 应用程序开始崩溃

c# - 使用 Linq(EF 核心)仅选择特定字段

c# - 创建 Controller 失败,表明 Controller 需要无参数公共(public)构造函数

asp.net-mvc - 基于路由数据值的 Ninject 注入(inject)

java - Zk Spring CustomComponent 引用 bean

java - 如何处理将依赖项注入(inject)富领域模型?

c# - 如何在构建过程中向 C# 程序添加外部信息?

c# - 链接按钮到上一页