我将通过示例展示一个问题.有一个具有流畅界面的基类:
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) 我正在为解决方案,项目,它们的默认命名空间和程序集(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应用程序).
我的问题是:你有这样的指导方针吗?描述一些东西是个好主意吗?您对我的方法有什么看法?
如果你分享你在工作中使用的方法,我会很高兴的.
你知道任何情况下空挡块不是绝对的邪恶吗?
try
{
...
// What and When?
...
}
catch { }
Run Code Online (Sandbox Code Playgroud) 我正在使用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事件的好方法吗?
我有这样的功能:
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改进我的代码?
我有ObjectContext,例如MyEntities.还有一些实体,假设它们是Entity1和Entity2.我想让MyEntities内部化.Entity1和Entity2必须是公共的.可能吗?
看下面的代码:
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# ×6
.net ×4
catch-block ×1
inheritance ×1
javascript ×1
mstest ×1
mvvm ×1
naming ×1
node.js ×1
promise ×1
q ×1
try-catch ×1
wpf ×1