我刚开始用.NET编程,我在实现时遇到了一些问题dependency injection (using Ninject).
我正在创建某种餐饮应用程序,用户可以浏览城镇,城镇浏览餐馆和餐馆浏览食物.
我正在使用UnitOfWork和存储库模式,例如我通过id访问城镇,如下所示:
_unitOfWork.TownRepository.GetByID(id);
Run Code Online (Sandbox Code Playgroud)
现在我开始在应用程序中实现服务,我遇到了需要dependency injection.
我已经创建ITownService,IRestaurantService和IFoodService(因为我已经TownRepository,RestaurantRepository并且FoodRepository在我的UnitOfWork).
TownService的样本外观:
public class TownService : ITownService
{
// initialize UnitOfWork
private IUnitOfWork _unitOfWork;
public TownService()
: this(new UnitOfWork())
{
}
public TownService(IUnitOfWork unitOfWork)
{
_unitOfWork = unitOfWork;
}
public Town GetByID(object id)
{
return _unitOfWork.TownRepository.GetByID(id);
}
public IEnumerable<Town> GetAll()
{
return _unitOfWork.TownRepository.Get();
}
public bool Insert(Town town)
{
// validation logic
if …Run Code Online (Sandbox Code Playgroud) 我有两个问题.
首先 - 在obj-c中声明字符串
@property (nonatomic, copy) NSString *name;
@property (nonatomic, copy) NSString *city;
Run Code Online (Sandbox Code Playgroud)
那些是(nonatomic, copy)正确的还是应该使用(nonatomic, strong),还是其他什么?
第二 - 如果我想为上面的字符串设置自定义初始值设定器,我会使用
-(id)initWithName:(NSString *)n andCity:(NSString *)c
{
self = [super init];
if (self) {
self.name = n;
self.city = c;
}
}
Run Code Online (Sandbox Code Playgroud)
或者我应该使用:
-(id)initWithName:(NSString *)n andCity:(NSString *)c
{
self = [super init];
if (self) {
self.name = [n copy]
self.city = [c copy];
}
}
Run Code Online (Sandbox Code Playgroud)
我可以看到两种方式似乎都适用于这两个问题,但我确信一个方法比另一个方法更正确,所以我想问一下我应该用哪些方法在其他项目中编写正确的代码.
谢谢.
我有一些构造函数的问题,controller并且service被调用controller.
这是我的服务:
// model state dictionary for validation
private ModelStateDictionary _modelState;
// initialize UnitOfWork
private IUnitOfWork _unitOfWork;
public TownService(ModelStateDictionary modelState, IUnitOfWork unitOfWork)
{
_modelState = modelState;
_unitOfWork = unitOfWork;
}
Run Code Online (Sandbox Code Playgroud)
现在在我的控制器中我想创建新服务,传递控制器this.ModelState但不想添加UnitOfWork内部控制器.
像这样的东西:
private ITownService _townService;
public TownController()
{
_townService = new TownService(this.ModelState, null);
}
Run Code Online (Sandbox Code Playgroud)
所以考虑的一切UnitOfWork都是在服务内部完成的.控制器只是传递它自己modelState,服务是创建新的服务UnitOfWork.
这可能也是好方法吗?我怎样才能做到这一点?或者我应该new UnitOfWork在控制器中添加而不是null参数?
因为我想尽可能地分离Core,DAL,Web,以便一切都发挥作用,并且在控制器和服务中添加UnitOfWork似乎是不好的方式......
谢谢.
.net asp.net-mvc dependency-injection unit-of-work service-layer
我想让自己变得更容易,所以我创建了一个由其他函数使用的字典(按对象或对象按键到达键),但该字典始终是静态的.这是一个很好的方式,或者我需要财产或其他什么?
+ (NSDictionary *)dictionaryWithCategoriesAndStrings
{
return @{
kNewsCategoryAll : @(NewsCategoryAll),
kNewsCategoryRadio : @(NewsCategoryRadio),
kNewsCategoryEconomics : @(NewsCategoryEconomics),
kNewsCategoryCulture : @(NewsCategoryCulture),
kNewsCategorySport : @(NewsCategorySport),
kNewsCategoryTravel : @(NewsCategoryTravel),
kNewsCategoryMusic : @(NewsCategoryMusic),
kNewsCategorySociety : @(NewsCategorySociety),
kNewsCategoryHealth : @(NewsCategoryHealth)
};
}
Run Code Online (Sandbox Code Playgroud)
所以现在我总是通过函数[self dictionaryWithCategoriesAndString]访问这个相同的字典;
注意:键是在顶部声明的静态字符串,对象是带整数的NSNumbers.
asp.net-mvc ×2
objective-c ×2
.net ×1
asp.net ×1
c# ×1
init ×1
ios ×1
ninject ×1
nscopying ×1
nsdictionary ×1
nsstring ×1
object ×1
static ×1
unit-of-work ×1