我有这种情况,当从ImplementClass调用AbstractMethod方法时,我想强制调用AbstractClass中的MustBeCalled方法.我以前从未遇到过这种情况.谢谢!
public abstract class AbstractClass
{
public abstract void AbstractMethod();
public void MustBeCalled()
{
//this must be called when AbstractMethod is invoked
}
}
public class ImplementClass : AbstractClass
{
public override void AbstractMethod()
{
//when called, base.MustBeCalled() must be called.
//how can i enforce this?
}
}
Run Code Online (Sandbox Code Playgroud) 我将构建的软件将涉及"应用程序"在不同状态之间切换很多.某些任务可以完成,具体取决于应用程序所处的状态.我正在考虑使用枚举作为状态
public class Application
{
public int Id {get;set;}
public Status {get;set;}
}
public enum Status
{
[Description("New")]New = 1, [Description("Closed")]Closed = 2
}
Run Code Online (Sandbox Code Playgroud)
但后来我想也许在数据库中使用查找表是好的,因为状态会经常更新/重新排序
table status (id int pk, desc string, sort_order int)
table application (id int pk, status_id int fk)
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我需要做的事情
if (application.Status == Status.New)
{ //do something }
else if (application.Status == Status.Closed)
{ //do other things }
Run Code Online (Sandbox Code Playgroud)
我认为以上情况更易于使用枚举.但是,当涉及到更新状态排序顺序或描述时,这将非常困难.
我应该使用反射根据查找表中的值动态创建枚举吗?或者我应该使用状态模式?我看到enum relfection的问题是性能影响.并且状态模式可以产生大量冗余代码.
你怎么看?提前致谢!
我有以下课程:
public class Fluently
{
public Fluently Is(string lhs)
{
return this;
}
public Fluently Does(string lhs)
{
return this;
}
public Fluently EqualTo(string rhs)
{
return this;
}
public Fluently LessThan(string rhs)
{
return this;
}
public Fluently GreaterThan(string rhs)
{
return this;
}
}
Run Code Online (Sandbox Code Playgroud)
在英语语法中,你不能拥有"等同于某种东西"或"做出比某事更重要的东西"所以我不希望Is.EqualTo和Does.GreaterThan成为可能.有没有办法限制它?
var f = new Fluently();
f.Is("a").GreaterThan("b");
f.Is("a").EqualTo("b"); //grammatically incorrect in English
f.Does("a").GreaterThan("b");
f.Does("a").EqualTo("b"); //grammatically incorrect in English
Run Code Online (Sandbox Code Playgroud)
谢谢!
以下JavaScript是什么意思?为什么函数嵌入在()中?
(function() {
var b = 3;
a += b;
}) ();
Run Code Online (Sandbox Code Playgroud) 我一直在用强类型语言编写单元测试,我对它有一个很好的理解.在JavaScript中编写单元测试以验证某些功能在某些浏览器中是否正常工作时,我将重新进行手动测试.我不知道它是如何工作的.因为JavaScript旨在缩小数据和表示之间的差距,并使其更具交互性.一切都在浏览器中发生,而且更多的是与UI有关.所以我假设如果我要编写一个单元测试,我会写一些像(在伪代码中):
run function A
check DOM if certain element has been created
if not then fail
check if element is visible
if not then fail
check for the content of that element
if null then fail
etc…
Run Code Online (Sandbox Code Playgroud)
编写这些测试对我来说似乎是"硬编码",缺少的是测试无法判断它是否已正确呈现,它只进行纯功能测试.所以我想知道是否有人可以向我解释JavaScript中正确的测试程序是什么,如何构建自动化以及这样做的一些一般概念.我只是看着John Resig的项目测试,但还没弄清楚它是什么.我现在也在阅读有关QUnit的内容.
我正在寻找一些关于我可以开始的概念/实践的介绍性材料.我不是在寻找特定的库或工具,除非他们对这些概念有很好的介绍.
谢谢.
javascript continuous-integration unit-testing cross-browser
给定两个数组作为参数(x和y)并找到x中第一次出现y的起始索引.我想知道最简单或最快的实现是什么.
例:
when x = {1,2,4,2,3,4,5,6}
y = {2,3}
result
starting index should be 3
Run Code Online (Sandbox Code Playgroud)
更新:由于我的代码错误,我将其从问题中删除.
我无法适应UI JavaScript编码的正确练习.所以我正在寻找一种更聪明的方法来做事.我一直在使用jQuery与ASP.NET,我一直在做类似下面的事情似乎不专业和愚蠢.JavaScript UI编程对我来说一直是个谜.我知道怎么做,但我从来不知道如何正确地做到这一点.
$(function(){
$('submit').click(function() {
//behaviors, setup styles, validations, blah...
});
});
Run Code Online (Sandbox Code Playgroud)
问题:
目标:
问题:
作为一个C#开发人员,我的想法主要是OO和jQuery是非常程序化的.我理解匿名函数的概念,但总的来说,我的想法仍然是尝试创建一个抽象UI然后声明属性或方法的域模型.但我真的不确定这是否是JavaScript中的方式.或者我是太理想还是我太努力去做一些不应该像OO OO那样的东西?所以问题是:
谢谢.
更新:我刚刚发现这张幻灯片,这似乎是一个很好的起点.这也是我刚刚发现的一个很好的例子.这是jQuery创建者的一个很好的教程.
我是一个线程菜鸟,我正在尝试用C#(.NET 3.5 SP1)编写一个自定义线程安全通用列表类.我已经阅读了为什么线程安全集合如此困难?.在查看了类的要求后,我想我只需要安全地添加到列表中并返回列表.该示例几乎显示了我想要的所有内容,但它缺少返回列表方法,因此我编写了自己的公共方法,如下所示:
更新:基于给出的建议我已经审查了我的要求,因此将课程简化为如下:
public sealed class ThreadSafeList<T>
{
private readonly IList<T> list = new List<T>();
private readonly object lockable = new object();
public void Add(T t)
{
lock (lockable)
{
list.Add(t);
}
}
public IList<T> GetSnapshot()
{
IList<T> result;
lock (lockable)
{
result = new List<T>(list);
}
return result;
}
}
Run Code Online (Sandbox Code Playgroud) 仅仅通过让数据库强制执行外键,它在开发方面造成了很多麻烦.特别是在单元测试期间,由于外键约束我无法删除表,我需要按照外键约束警告不会被触发的顺序创建表.实际上,我没有看到让数据库强制执行外键约束的重点.如果应用程序设计得当,除了select查询之外,不应该有任何手动数据库操作.我只是想确保通过不在数据库中使用外键约束并将其完全留给应用程序负责来确保我不会陷入困境.我错过了什么吗?
PS我的真实单元测试(不是那些使用模拟)将丢弃现有的表,如果底层域对象的结构已被修改.
我在其中一个项目中使用NHibernate 2.1.0.4000.我在cfg文件中将adonet.batch_size设置为100但是我仍然看到insert语句被视为单个语句.更新似乎工作正常.这是怎么回事?
更新:是因为我选择了身份作为主键生成器吗?
<id name="Id" column="Id" unsaved-value="0" type="Int32">
<generator class ="identity"></generator>
</id>
Run Code Online (Sandbox Code Playgroud) c# ×4
javascript ×3
arrays ×1
asp.net ×1
batch-file ×1
database ×1
enums ×1
foreign-keys ×1
function ×1
generic-list ×1
inheritance ×1
insert ×1
jquery ×1
list ×1
method-call ×1
nhibernate ×1
overriding ×1
reflection ×1
state ×1
sub-array ×1
unit-testing ×1