gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 12:17:47 25 4
gpt4 key购买 nike

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

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

我的代码是这样的。 I契约(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com