小编The*_*Sky的帖子

MVC3 RC Razor @helper位置

在ScottGu的博客上对Razor的介绍中,他提到将@helpers放在里面Views\Helpers.我尝试在RC中这样做,经过大量搜索,我发现帮助器应该在App_Code文件夹中.我并不需要在其他组件(尤其是如果他们是具体到我的助手这个项目),并让他们一路在App_Code看起来丑陋IMO.目前的解决方案是将这些助手放在View\Helpers文件夹中吗?

asp.net-mvc asp.net-mvc-3

7
推荐指数
2
解决办法
1899
查看次数

应该从服务层返回什么类型的结果?

比方说,我有一个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)

这是一个很好的设计吗?或者我甚至需要向消费者报告这些错误?是否足以说"添加帖子时发生错误".然后在服务内部记录异常?

任何其他建议表示赞赏.

c# architecture domain-driven-design

7
推荐指数
2
解决办法
1955
查看次数

Ninject注入界面的多重绑定

我有以下课程:

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)

.net c# ninject

7
推荐指数
1
解决办法
1381
查看次数

为ObjectContext创建接口

我正在尝试为其创建一个抽象层ObjectContext.我理解OC是一个工作单元,但我并不完全是如何为它编写一个好的界面.理想情况下,我希望能够换掉我的'RealDataContext',它实现IDataContext了像'FakeDataContext'这样完全在内存中的东西.

原因是我希望能够针对内存数据库测试我的存储库.

谢谢!

c# entity-framework

6
推荐指数
1
解决办法
3922
查看次数

使用"NOT EXISTS"被认为是错误的SQL实践吗?

多年来我听到很多人说:

"加入"运算符优先于"NOT EXISTS"

为什么?

sql coding-style

6
推荐指数
1
解决办法
4299
查看次数

MethodCallExpression.Method始终返回根基类的MethodInfo

这是一个打印方法签名的简单应用程序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)

.net c# expression-trees

6
推荐指数
1
解决办法
334
查看次数

使用带有equals和period的single-hypen参数执行外部命令

我有一个接受这样的参数的工具(例如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"'
  • PowerShell V3 +: foo.exe --% -name="john.doe"
  • $nameArg = "john.doe"; foo.exe -name="$nameArg"

但是,其中一些选项会阻止变量插值.还有其他方法可以阻止PowerShell导致语法问题吗?在这个特定的实例中(添加句点),为什么PowerShell有解释这个问题?

powershell powershell-2.0

6
推荐指数
1
解决办法
65
查看次数

密码盐应该存储在数据库中自己的字段中吗?

我一直在做很多研究,以确定存储我正在开发的系统的密码的最佳实践.到目前为止,我已经决定使用带有RNG的SHA512哈希为每个密码生成一个盐(显然是针对Rainbow Tables等的最佳实践).

将密码存储在表中的两个单独字段中是否过于简单,无法确定数据库中的密码表示(有PasswordHash字段和PasswordSalt字段)?通过默默无闻看起来似乎是安全性,但我想将盐和密码哈希存储在一个连接在一起的字段中.

这会"帮助"吗?

database security passwords

5
推荐指数
2
解决办法
1263
查看次数

从类库中访问ViewContext

是否可以ViewContext从类库中访问?我需要获取当前View和Controller的动作名称.我在我的类库项目中添加了两个System.Web.dll,System.Web.Mvc但仍无法找到获得我需要的方法.虽然我可以使用访问当前上下文System.Web.HttpContext.Current.

c# asp.net-mvc-2

5
推荐指数
1
解决办法
3312
查看次数

为什么 return 表达式在不需要时使用分号?

我正在学习 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)

rust

5
推荐指数
1
解决办法
1662
查看次数