在ScottGu的博客上对Razor的介绍中,他提到将@helpers放在里面Views\Helpers.我尝试在RC中这样做,经过大量搜索,我发现帮助器应该在App_Code文件夹中.我并不需要在其他组件(尤其是如果他们是具体到我的助手这个项目),并让他们一路在App_Code看起来丑陋IMO.目前的解决方案是将这些助手放在View\Helpers文件夹中吗?
比方说,我有一个PostsService创建帖子:
public class PostsService : IPostsService
{
public bool Create(Post post)
{
if(!this.Validate(post))
{
return false;
}
try
{
this.repository.Add(post);
this.repository.Save();
}
catch(Exception e)
{
return false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
这样做的问题是,如果在存储库操作期间抛出异常,则会吞下它.Create()返回false,消费者知道的所有内容Post都是未添加,但不知道原因.
相反,我想到了一ServiceResult堂课:
public class ServiceResult
{
public bool Success { get; private set; }
public Exception Exception { get; private set; }
}
Run Code Online (Sandbox Code Playgroud)
这是一个很好的设计吗?或者我甚至需要向消费者报告这些错误?是否足以说"添加帖子时发生错误".然后在服务内部记录异常?
任何其他建议表示赞赏.
我有以下课程:
using System;
interface IA { }
class A1 : IA { }
class A2 : IA { }
class B
{
public B(IA a) {}
}
class BProvider : Provider<B>
{
IA _a;
public BProvider(IA a) { _a=a; }
protected override B CreateInstance(IContext context) { return new B(_a); }
}
Run Code Online (Sandbox Code Playgroud)
ninject模块Load()代码:
Bind<IA>().To<A1>();
Bind<IA>().To<A2>();
Bind<B>().ToProvider<BProvider>();
Run Code Online (Sandbox Code Playgroud)
主要代码:
kernel.GetAll<IA>(); // works fine
kernel.GetAll<B>(); // I expect to get IEnumerable<B> with two elements, but instead of this I get an error that there …Run Code Online (Sandbox Code Playgroud) 我正在尝试为其创建一个抽象层ObjectContext.我理解OC是一个工作单元,但我并不完全是如何为它编写一个好的界面.理想情况下,我希望能够换掉我的'RealDataContext',它实现IDataContext了像'FakeDataContext'这样完全在内存中的东西.
原因是我希望能够针对内存数据库测试我的存储库.
谢谢!
多年来我听到很多人说:
"加入"运算符优先于"NOT EXISTS"
为什么?
这是一个打印方法签名的简单应用程序MethodCallExpression:
using System;
using System.Linq;
using System.Linq.Expressions;
class A
{
public virtual void Foo() { }
}
class B : A
{
public override void Foo() { }
}
class C : B
{
public override void Foo() { }
}
class Program
{
static void Main(string[] args)
{
PrintMethod<A>(a => a.Foo());
PrintMethod<B>(b => b.Foo());
PrintMethod<C>(c => c.Foo());
Console.Read();
}
static void PrintMethod<T>(Expression<Action<T>> expression)
{
var body = (MethodCallExpression)expression.Body;
var method1 = body.Method;
var method2 = typeof(T).GetMethod(body.Method.Name, body.Method.GetParameters().Select(p …Run Code Online (Sandbox Code Playgroud) 我有一个接受这样的参数的工具(例如in test.ps1):
foo.exe -name="john"
Run Code Online (Sandbox Code Playgroud)
因此,每个参数都使用单个连字符-,名称,等于=,然后是参数的值来指定.
当我从PowerShell调用这个确切的表达式时,它会毫无问题地执行.但是,当其中一个值包含这样的句点时.:
foo.exe -name="john.doe"
Run Code Online (Sandbox Code Playgroud)
运行它会导致语法错误:
$ ./test.ps1字符串开始:在test.ps1:1 char:24 + foo.exe -name ="john.doe <<<<"缺少终结符:".在test.ps1:1 char: 25
+ foo.exe -name ="john.doe"<<<<
+ CategoryInfo:ParserError:(:String)[],ParseException
+ FullyQualifiedErrorId:TerminatorExpectedAtEndOfString
我可以阻止PowerShell解释这一点的一些方法是:
foo.exe "-name=`"john.doe`""foo.exe '-name="john.doe"'foo.exe --% -name="john.doe"$nameArg = "john.doe"; foo.exe -name="$nameArg"但是,其中一些选项会阻止变量插值.还有其他方法可以阻止PowerShell导致语法问题吗?在这个特定的实例中(添加句点),为什么PowerShell有解释这个问题?
我一直在做很多研究,以确定存储我正在开发的系统的密码的最佳实践.到目前为止,我已经决定使用带有RNG的SHA512哈希为每个密码生成一个盐(显然是针对Rainbow Tables等的最佳实践).
将密码存储在表中的两个单独字段中是否过于简单,无法确定数据库中的密码表示(有PasswordHash字段和PasswordSalt字段)?通过默默无闻看起来似乎是安全性,但我想将盐和密码哈希存储在一个连接在一起的字段中.
这会"帮助"吗?
是否可以ViewContext从类库中访问?我需要获取当前View和Controller的动作名称.我在我的类库项目中添加了两个System.Web.dll,System.Web.Mvc但仍无法找到获得我需要的方法.虽然我可以使用访问当前上下文System.Web.HttpContext.Current.
我正在学习 Rust,我发现一些与函数混淆的东西。根据官方参考,返回表达式:
.. [is] 用关键字 return 表示。计算返回表达式将其参数移动到当前函数的输出槽中,破坏当前函数激活帧,并将控制权转移到调用者帧。
所以,这个程序有效:
fn main() {
let current_hour = 10;
let message = get_message(current_hour);
println!("Good {0}", message);
}
fn get_message(current_hour: i32) -> &'static str {
if current_hour < 11 {
return "Morning"
}
else if current_hour < 17 {
return "Afternoon"
}
else {
return "Evening"
}
}
Run Code Online (Sandbox Code Playgroud)
当我在“返回”表达式中添加分号时,它仍然有效:
fn main() {
let current_hour = 10;
let message = get_message(current_hour);
println!("Good {0}", message);
}
fn get_message(current_hour: i32) -> &'static str {
if current_hour …Run Code Online (Sandbox Code Playgroud) c# ×5
.net ×2
architecture ×1
asp.net-mvc ×1
coding-style ×1
database ×1
ninject ×1
passwords ×1
powershell ×1
rust ×1
security ×1
sql ×1