【发布时间】:2015-11-01 09:28:46
【问题描述】:
我正在使用 Simple Injector 进行测试,但在 OOP 上还是很新的。我正在尝试创建松散的耦合类。这是我的场景。
我有这样的用户回购和界面。
public class UserRepository : IUserRepository
{
public void Add(Model.User user)
{
Console.WriteLine("Name:"+user.Name+"\n"+"SurName:"+user.SurName);
}
public void Delete(int id)
{
throw new NotImplementedException();
}
}
public interface IUserRepository
{
void Add(User user);
void Delete(int id);
}
我的TestInjectedClass 类和接口是这样的,我打算在 Program Main 中使用。
public class TestInjectedClass : ITestInjectedClass
{
private readonly IUserRepository _userRepository;
public TestInjectedClass(IUserRepository userRepository)
{
_userRepository = userRepository;
}
public void UserRepoRun()
{
var user = new User() {Id = 1,Name = "ada",SurName = "stack"};
_userRepository.Add(user);
}
}
public interface ITestInjectedClass
{
void UserRepoRun();
}
我的控制台程序如下所示:
class Program
{
static ITestInjectedClass _testInjectedClass;
private static IUserRepository _userRepository;
static void Main(string[] args)
{
_testInjectedClass= new TestInjectedClass(_userRepository);
_testInjectedClass.UserRepoRun();
Console.ReadLine();
}
public Program()
{
Bootstrap.Start();
}
}
BootStrap 类在这里:
class Bootstrap
{
public static void Start()
{
var container = new Container();
// Register your types, for instance:
container.Register<IUserRepository, UserRepository>(Lifestyle.Singleton);
container.Register<ITestInjectedClass, TestInjectedClass>(Lifestyle.Singleton);
//container.Register<IUserRepository, TestInjectedClass>(Lifestyle.Singleton);
//container.Register<IUserContext, WinFormsUserContext>();
container.Register<TestInjectedClass>();
// Optionally verify the container.
container.Verify();
}
}
我在运行程序时遇到问题,在 TestInjectionClass 内的 _userRepository 上出现值异常。
如何将TestInjectionClass 和UserRepository 正确注入主程序。谢谢
【问题讨论】:
-
那么我该如何解决这个问题.thankx
-
我应该在运行程序之前注册所有依赖项
标签: c# dependency-injection simple-injector