小编Ale*_*oun的帖子

我应该在类中使用Field或Property来设置值

所以我和一位同事就一段代码进行了友好的争论:

public sealed class NewObject
{
    private string _stuff = string.Empty;

    public string Stuff
    {
        get { return GetAllStuff(); }
    }

    private string GetAllStuff()
    {
        //Heavy string manipulation of _stuff
    }

    public NewObject(string stuffToStartWith)
    {
        _stuff = stuffToStartWith;
    }

    public static NewObject operator +(NewObject obj1, NewObject obj2)
    {
        if (obj1 == null)
            throw new ArgumentNullException();

        if (obj2 == null)
            throw new ArgumentNullException();

        NewObject result = new NewObject(string.Empty);
        result._stuff = String.Concat(obj1._stuff, obj2._stuff);

        return result;
    }
}
Run Code Online (Sandbox Code Playgroud)

争论在于操作员覆盖.我的同事认为,除了构造函数之外,设置私有字段的值不是最好的编程习惯.我的同事提出的解决方案是重构Stuff属性的名称AllStuff并添加一个属性 …

c#

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

HTML背景的url()函数

div {  background:url(smiley.gif) top left no-repeat }
Run Code Online (Sandbox Code Playgroud)

这是什么url()?我在网上找不到文档.

(参见http://www.w3schools.com/cssref/css3_pr_background.asp.)

html css

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

Ninject不注入并抛出空引用异常

我是Ninject的新手,所以我确信这是我做错了,我只是不确定是什么.我在我的MVC3 Web应用程序中使用Ninject和Ninject.MVC3.这是我正在尝试做的一个例子.

我正在使用Repository模式:

public interface IRepository<T>
{
    T Get(object id);
    IList<T> GetAll();
    void Add(T value);
    void Update(T value);
    void Delete(T value);
}
Run Code Online (Sandbox Code Playgroud)

对于具体类型:

public Customer
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Address { get; set; }

    public Customer()
    {
    }
}
Run Code Online (Sandbox Code Playgroud)

现在我有两个独立的存储库,一个需要注入数据库存储库的缓存版本:

public CachedCustomerRepository : IRepository<Customer>
{
    private IRepository<Customer> _repository;

    public Customer Get(object id)
    {
        Customer cust = new Customer();
        IList<Customer> custs = GetAll();
        if (custs != null && …
Run Code Online (Sandbox Code Playgroud)

c# ninject asp.net-mvc-3

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

依赖注入的创建模式

我特意在Ninject中使用C#,但问题不仅仅是Ninject.我的问题是我有几个类都有不同的构造函数参数加上注入的类.我知道我可以kernel.Get<MyObject>(constructor args here)用来实例化对象.这对我来说并不合适,因为我的内核遍布整个地方.我会尽力列出下面的例子.

我现在拥有的:

public interface IStore<T>
{
    void CommitToDatabase(T item);
}

public abstract class Thing
{
    private IStore<Thing> _store;

    protected Thing(object key, IStore<Thing> store)
    {
        Key = key;
        _store = store;
    }

    public object Key { get; private set; }

    public virtual void Update()
    {
        _store.CommitToDatabase(this);
    }
}

public class Person :Thing
{
    public Person(object key, string name, int age, IStore<Thing> store)
        : base(key, store)
    {
        Name = name;
        Age = age;
    }

    public string Name { …
Run Code Online (Sandbox Code Playgroud)

c# design-patterns dependency-injection ninject object-construction

4
推荐指数
1
解决办法
326
查看次数

CQS中的命令和事件的意图w/ES

我的问题与有关.虽然相关的问题和答案显示了我们为什么要将它们分开,但我想确保我对意图的理解是正确的.在我看过的所有示例中,似乎命令的意图是它可以被拒绝并且它更新内存中的对象,然后事件将更新数据库.现在我知道我在这里过度简化了,但是理解命令是为了更新内存和事件更新数据库是正确的吗?如果没有,有人可以请我澄清.

我正在努力学习这些模式,这就是我到目前为止所掌握的模式,我想确保它是正确的.提前致谢.

cqrs event-sourcing

4
推荐指数
1
解决办法
406
查看次数

T-SQL确定结果集中的最低位值

假设我有一个包含a int primary key,a varcharbitvalue的表.请记住,我实际上并没有使用这样的东西,但它说明了我在SELECT声明中要做的事情.

仿表:

CREATE TABLE HorribleSample(
    Id INT IDENTITY(1,1) NOT NULL,
    Code VARCHAR(6) NOT NULL,
    IsTrue BIT NOT NULL,
    CONSTRAINT PK_HorribleSample PRIMARY KEY CLUSTERED(Id ASC)
)
Run Code Online (Sandbox Code Playgroud)

样本数据:

INSERT INTO HorribleSample VALUES('HELLO', 0)
INSERT INTO HorribleSample VALUES('WORLD', 1)
INSERT INTO HorribleSample VALUES('HELLO', 1)
INSERT INTO HorribleSample VALUES('WORLD', 1)
Run Code Online (Sandbox Code Playgroud)

我要做的是从结果集中选择最低位值.我以为我能做到:

SELECT MIN(IsTrue)
FROM HorribleSample
WHERE Code = 'HELLO'
Run Code Online (Sandbox Code Playgroud)

但我得到一个错误,指出我不能MINbit字段上使用.

代码是HELLO,我希望0,但是当WORLD我想到的时候1.我怎么能做到这一点?它甚至可能吗?

sql t-sql sql-server

2
推荐指数
1
解决办法
159
查看次数