Я создаю статический класс Util в проекте библиотеки для определения общего метода в проекте asp.net mvc 5, я использую structmap.mvc5 , но он не инициализирует установку IService статическим свойством, я объявляю в статическом классе. Спасибо за помощь:Setter Property Injection не работает в статическом классе, используя ASP.NET MVC 5 и Structuremap
Config класса IoC:
public static class IoC {
public static IContainer Initialize() {
ObjectFactory.Initialize(x =>
{
//Standard registration
x.For<IStudentRepository>().Use<StudentRepository>();
x.For<IStudentService>().Use<StudentService>();
x.For<IApplicationSettings>().Use<WebConfigApplicationSettings>();
x.For<IAuthProvider>().Use<FormsAuthProvider>();
//Setter injection
x.Policies.FillAllPropertiesOfType<IStudentService>().Use<StudentService>();
x.Policies.SetAllProperties(prop =>
{
prop.OfType<IStudentService>();
});
});
return ObjectFactory.Container;
}
}
Класс Util:
public static class Util
{
private static IStudentService _studentService;
public static IQueryable<User> GetAllStudents()
{
return _studentService.GetAllStudents();
}
public static T ParseEnum<T>(string value)
{
return (T)Enum.Parse(typeof(T), value, true);
}
public static List<PermissionType> GetAllPermissionByUserID(int userID)
{
return _studentService.GetAllPermissionByUserID(userID);
}
public static bool IsAuthentication(string user, string password)
{
return _studentService.IsAuthentication(user,password);
}
public static User FindUserByUsername(string username)
{
return _studentService.FindUserByUsername(username);
}
}
Почему вы устанавливаете класс Util статичным? –
@ Linh Tuan: Потому что я называю класс Util в любом месте решения и не инициализирую объект из класса. –
Эта проблема «_studentService» неинициализирована –