小编bni*_*dyc的帖子

C#中的流畅接口和继承

我将通过示例展示一个问题.有一个具有流畅界面的基类:

class FluentPerson
{
    private string _FirstName = String.Empty;
    private string _LastName = String.Empty;

    public FluentPerson WithFirstName(string firstName)
    {
        _FirstName = firstName;
        return this;
    }

    public FluentPerson WithLastName(string lastName)
    {
        _LastName = lastName;
        return this;
    }

    public override string ToString()
    {
        return String.Format("First name: {0} last name: {1}", _FirstName, _LastName);
    }
}
Run Code Online (Sandbox Code Playgroud)

和一个儿童班:

class FluentCustomer : FluentPerson
{
    private long _Id;

    private string _AccountNumber = String.Empty;

    public FluentCustomer WithAccountNumber(string accountNumber)
    {
        _AccountNumber = accountNumber;
        return this;
    }
    public FluentCustomer WithId(long …
Run Code Online (Sandbox Code Playgroud)

c# inheritance fluent-interface

57
推荐指数
3
解决办法
5556
查看次数

命名:解决方案,项目,命名空间和程序集

我正在为解决方案,项目,它们的默认命名空间和程序集(Visual Studio)命名准则.现在它看起来像:例如,我们有一个名为"Company"的公司和一个名为"Project"的项目.该项目在单独的dll,UI(WPF/WinForms)和Web部件中具有业务逻辑.问题标题中列出了一些事物的名称:

解决方案名称:"项目".

业务逻辑DLL项目名称:"Project",默认命名空间:"Company.Project",程序集名称:"Project".

UI项目名称:"ProjectUI",默认namesapce:"Company.Project.UI"(可以在多个版本的UI的情况下扩展,如"Company.Project.UI.WPF"),程序集名称"Project"(工作)因为它不是一个dll).

Web项目名称:"ProjectWeb",默认名称空间:"Company.Project.Web",程序集名称:"ProjectWeb"(用于Web应用程序).

我的问题是:你有这样的指导方针吗?描述一些东西是个好主意吗?您对我的方法有什么看法?

如果你分享你在工作中使用的方法,我会很高兴的.

.net c# naming visual-studio

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

11
推荐指数
1
解决办法
9347
查看次数

PropertyChanged事件测试:这是一个好方法吗?

我正在使用MVVM模式开发WPF应用程序.我有ViewModel,代码如下:

public bool EditModeEnabled
{
    get { return _EditModeEnabled; }
    set
    {
        _ModeEditModeEnabled = value;
        OnPropertyChanged("EditModeEnabled");
        OnPropertyChanged("CommentTextBoxVisibility");
    }
}
Run Code Online (Sandbox Code Playgroud)

OnPropertyChanged是引发PropertyChanged事件的基类的虚方法.我想测试PropertyChanged事件提升,并测试我的测试方法:

public void EditModeEnabledTest()
{
    var imageViewModel = TestHelper.GetTestImageViewModel();
    var firedEvents = new List<string>();
    imageViewModel.PropertyChanged += ((sender, e) => firedEvents.Add(e.PropertyName));
    imageViewModel.Mode = true;
    Assert.AreEqual(firedEvents.Count, 2);
    Assert.IsTrue(firedEvents.Contains("EditModeEnabled"));
    Assert.IsTrue(firedEvents.Contains("CommentTextBoxVisibility"));
    ...
}
Run Code Online (Sandbox Code Playgroud)

这是测试ProprtyChanged事件的好方法吗?

.net c# wpf mstest mvvm

10
推荐指数
1
解决办法
3629
查看次数

如何将函数调用与两个回调转换为promise

我有这样的功能:

var f = function(options, successCallback, errorCallback) {
   ...
}
Run Code Online (Sandbox Code Playgroud)

我想把它转换成一个承诺.我目前的解决方案是:

var deferred = Q.defer();

f(options,
    function (result) {
        deferred.resolve(result);
    }, function (err) {
        deferred.reject(err);
    }
);

return deferred.promise;
Run Code Online (Sandbox Code Playgroud)

我不能使用Q.fcall,因为它需要一个Node.js样式的回调 function(err, result) { ... }

那么,有没有办法使用Q API改进我的代码?

javascript node.js promise q

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

实体框架:是否可以将对象上下文置于内部?

我有ObjectContext,例如MyEntities.还有一些实体,假设它们是Entity1和Entity2.我想让MyEntities内部化.Entity1和Entity2必须是公共的.可能吗?

.net c# entity-framework

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

扩展方法与父类方法行为

看下面的代码:

class A
{
    public string DoSomething(string str)
    {
        return "A.DoSomething: " + str;
    }
}

class B : A
{
}

static class BExtensions
{
    public static string DoSomething(this B b, string str)
    {
        return "BExtensions.DoSomething: " + str;
    }
}

class Program
{
    static void Main(string[] args)
    {
        var a = new A();
        var b = new B();
        Console.WriteLine(a.DoSomething("test"));
        Console.WriteLine(b.DoSomething("test"));

        Console.ReadKey();
    }
}
Run Code Online (Sandbox Code Playgroud)

代码的输出是:

A.DoSomething:测试

A.DoSomething:测试

编译时,它不会发出警告.

我的问题是:为什么在代码编译时没有警告,以及在DoSomething调用方法时究竟发生了什么?

c# extension-methods

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