我有3个项目文件
webui - controllers and views
framework - service layer and repos
tests- unit tests
Run Code Online (Sandbox Code Playgroud)
所以我看到的是我的控制器只会与我的服务层(包含我的业务逻辑)对话.服务层将与repos通信并获取数据库数据.
我的回购只会说数据库并返回数据.
现在,如果我想进行单元测试,我需要有假的服务层和假存储库.
通过这种方式,我可以隔离地测试控制器和服务层.
那么我在哪里将我的ninject代码放在我的框架类库中,以便我可以将它与我的服务层一起使用?
编辑
史蒂文,你说我应该这样做
//使用mvc扩展在全局aspx中设置ninject
//现在绑定东西
private class SportsStoreServices : NinjectModule
{
public override void Load()
{
Bind<IAdminService>().To<AdminService>();
Bind<IAdminRepo>().To<AdminRepo>();
}
}
Run Code Online (Sandbox Code Playgroud)
//控制器
public class AccountController : Controller
{
//
// GET: /Account/
private IAdminService adminService;
public AccountController(IAdminService adminService)
{
this.adminService = adminService;
}
public ActionResult Login()
{
var getAllAdmins = adminService.GetAllAdmins();
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
//服务层
public class AdminService : IAdminService
{ …Run Code Online (Sandbox Code Playgroud) dependency-injection ninject ioc-container repository-pattern asp.net-mvc-2
在Scala中,我可以使用两个参数列表定义一个函数.
def myAdd(x :Int)(y :Int) = x + y
Run Code Online (Sandbox Code Playgroud)
这样可以轻松定义部分应用的功能.
val plusFive = myAdd(5) _
Run Code Online (Sandbox Code Playgroud)
但是,我可以通过定义和返回嵌套函数来完成类似的事情.
def myOtherAdd(x :Int) = {
def f(y :Int) = x + y
f _
}
Run Code Online (Sandbox Code Playgroud)
在化妆方面,我已经移动了下划线,但这仍然感觉像是在晃动.
val otherPlusFive = myOtherAdd(5)
Run Code Online (Sandbox Code Playgroud)
我应该使用什么标准来偏好一种方法呢?
我有一个班级Room和一个班级World.目前,我有一个
Dictionary<Point, Room> world;
Run Code Online (Sandbox Code Playgroud)
我存储Room的是这样的:
world.Add(new Point(0,0), new Room());
Run Code Online (Sandbox Code Playgroud)
但是当我尝试访问它时,它返回null:
world.Get(new Point(0,0));
Run Code Online (Sandbox Code Playgroud)
我理解为什么会这样.但我的问题是:有人知道更好的方法吗?
我正在为WPF寻找一些好的字体选择器和颜色选择器组件.我试图找到一些标准的解决方案,如Winforms组件,但似乎没有(我想知道为什么?).
它不一定是完美的,从代码项目中可以得到一些,但我更喜欢看起来很好看的直观易用的组件.
谢谢
我有一个具有以下长整数格式的日期的数据库:
20100101000000
当天时间是2010年1月1日,00:00:00。
我希望能够将其转换为普通的SQL Datetime语法并返回。这可能吗?我只能做到这一点:
SELECT CAST(CURRENT_TIMESTAMP as int);
Run Code Online (Sandbox Code Playgroud)
它返回“ 40556”-不完全是Im之后的内容。
当我从文件中读取内容时,有时会出现此错误" UTF-8中的无效字节序列 ".注意 - 只有在字符串中有一些特殊字符时才会发生这种情况.我试过没有"r:UTF-8"打开文件,但仍然得到相同的错误.
open(file, "r:UTF-8").each_line { |line| puts line.strip(",") } # line.strip generates the error
Run Code Online (Sandbox Code Playgroud)
文件内容:
# encoding: UTF-8
290919,"SE","26","Sk‰l","",59.4500,17.9500,, # this errors out
290956,"CZ","45","HornÌ Bradlo","",49.8000,15.7500,, # this errors out
290958,"NO","02","Svaland","",58.4000,8.0500,, # this works
Run Code Online (Sandbox Code Playgroud)
这是我从外面获得的CSV文件,我试图将其导入我的数据库,它顶部没有"#encoding:UTF-8",但我添加了这个,因为我读到了某处它将解决这个问题,但事实并非如此.:(
环境:
我正在检查以确保浮点数不为零.浮子不可能变为负面.那么这个float != 0.0f或者这个更快float > 0.0f吗?
谢谢.
编辑:是的,我知道这是微优化.但是每次通过我的游戏循环都会调用它,无论如何我想知道.
这是相关代码:
NSString *address = [NSString stringWithFormat:@"%@", [defaultServer root]];
address = [address stringByAppendingFormat:@"%@", [defaultServer login]];
address = [address stringByAppendingFormat:@"?%@", [params urlEncodedString]];
NSString *response = [[NSString alloc] init];
response = [self getResponseFromWebAddress:address];
[response release];
[address release];
Run Code Online (Sandbox Code Playgroud)
此代码在此处没有错误,但稍后在某些Apple库中会抛出"发送到解除分配的实例的消息"错误.但是,如果我注释掉[address release]它就行了.为什么?我不太了解内存管理,这让我很困惑.
不是最好的方法... preg_match或rtrim.无法工作......
$insert = http://www.site.com/buy/vancouver/house
$insert = rtrim("$insert", "/buy");
Run Code Online (Sandbox Code Playgroud)
没变.
谢谢您的帮助.
vim用户使用什么方法来快速访问ruby和rails的文档(除了切换到浏览器以使用ruby-doc或railsapi?).
我试图去适应这个脚本(http://vim.wikia.com/wiki/Online_documentation_for_word_under_cursor)这样的伎俩但它只会工作,如果光标在一个类的名字,我想它与两个工作类和方法.
谢谢.
c# ×2
ruby ×2
.net ×1
c ×1
c++ ×1
comparison ×1
components ×1
coordinate ×1
iphone ×1
ninject ×1
objective-c ×1
performance ×1
php ×1
preg-match ×1
scala ×1
sql ×1
t-sql ×1
vim ×1
wpf ×1
xcode ×1