让我们假设我负责开发Scrabble游戏,因为客户的主要要求之一是能够在以后尝试不同的游戏方式和模式.我已经制作了一个足够灵活的设计来支持这些变化.剩下的唯一问题是暴露给客户端的内容(对象的访问修饰符),以及如何组织它(如何在命名空间/包中公开我的对象).
我应该如何定义这样的东西,使客户端可以轻松使用我的标准实现(标准的Scrabble游戏,但能够进行他想要的所有修改?我想我需要的是一种框架,他可以在从事于.
我在非严格的分层系统中组织了我的类/接口:
包含可能在整个系统中使用的基本数据类型.系统中的任何人都可以访问此程序包及其成员.其所有成员都是公开的.
包含我定义的所有接口,这些接口可能有助于创建客户端新的Scrabble实现.还包含游戏中使用的值类型,如Piece.其所有成员都是公开的.
包含所有需要的类/代码,以在Implementations.StandardScrabble包中实现我的标准Scrabble游戏.如果客户决定实现游戏的其他变体,他可以在Implementations.XYZ中创建它们.这些类都受到包保护,并且包外部唯一可用的是游戏外观.使用域和数据类型包.
包含我已实现的UI类,以便客户端和程序用户都可以运行游戏(我的实现).可以访问所有其他图层.
我组织事物的方式有几个缺点,最明显的是如果客户想要创建自己的游戏版本,他必须基本上自己实现几乎所有东西(我在Domain中共享接口,但是他几乎什么都不做.)我觉得我应该将所有的实现类传递给Domain,然后只有一个Façade在Implementations命名空间中构建我的标准Scrabble?
你会怎么做?是否有关于如何构建这种程序(基本上是框架)的推荐阅读?
谢谢
任何时候这里是一个错误的网页我正在访问IE调试器开始问我,如果我想调试页面.我该如何关闭此行为?
我的代码是从0到1的随机数字.我看到数字1的出现次数远远超过数字0然后我认为在统计上是可能的.
这是我的代码:
int shipNumber = arc4random() % 2;
Run Code Online (Sandbox Code Playgroud)
该代码应该有效吗?我只是疯了吗?
我有一个存储过程(SP),我传入一个值.在此SP中,我尝试从链接/远程服务器上的另一个SP的结果创建/填充临时表.那就是我试图在我的SP中执行SP并填充我的查询将使用的临时表.
我尝试使用以下语法,但它不起作用,因为看起来openquery不喜欢"+"或@param1参数.
select * into #tempTable
from openquery([the Linked server],'exec thelinkedSPname ' + @param1)
Run Code Online (Sandbox Code Playgroud)
如果我在其中硬编码参数值,它可以正常工作.
select * into #tempTable
from openquery([the Linked server],'exec thelinkedSPname 2011')
Run Code Online (Sandbox Code Playgroud)
我也已经手动构建临时表并尝试执行链接的SP,但这也不起作用.
create table #tempTable(
.
.
.
)
insert into #tempTable
(
.
.
.
)
Exec [the Linked server],'exec thelinkedSPname ' + @param1
Run Code Online (Sandbox Code Playgroud)
有关如何从通过链接服务器执行SP的SP中填充临时表的任何建议.注意上面的SQL只是伪代码
类似的问题可能存在,但它们似乎都没有帮助.所以我会尝试解释一个更具体的案例,看看是否有人可以帮助我:)
这是事情,我有一个带有templatefields的gridview,我想让用户指定这些列的显示顺序.因此,用户创建视图并决定要显示哪个列的第一个,第二个等等.
基本上,我需要在网格加载数据后更改列的顺序.
听起来很简单吧?嗯,显然不是.至少我还没有达到目的.
一些注意事项: - 当然我将AutogenerateColumns设置为false. - 更改sql select列顺序因前一项而无效. - 我不想通过代码生成列.
有任何想法吗?
我正在构建一个关于我正在构建的应用程序的安全性的问题......它是一个水晶报表查看器的包装器,为用户提供了一些额外的功能.
有许多内部用户可以创建/修改Crystal Reports.我已经做了一些测试,对于一个与各种数据源连接非常密切的应用程序,它似乎并不关心安全这样做.没有什么可以阻止我修改现有的水晶报告,每个人都相信它会变成恶意和有害的东西.只需添加一个带有以下sql的命令表:
DELETE FROM tbl_Employees; SELECT FROM tbl_Employees;
Run Code Online (Sandbox Code Playgroud)
实际上,您可以在用户有权执行的水晶报表中执行任何操作...只要它以选择结束即可.这引出了我的问题:我有什么方法可以确保我的应用程序限制我们的SQL服务器的任何连接只选择?我不能暂时修改用户凭据,并且我不能使用单个只读帐户,因为我仍然需要将用户限制为他们的正常权限(即他们可以查询哪些数据库).
我不是很有希望,因为我读过的任何内容都让我相信我可以用这种方式限制联系.
另一方面,如果他们如此倾向,那么制作报告的大多数人都可以采取更直接的方法来破坏我们的数据......但我几乎不认为这是一个不利于确保我的应用程序尽可能安全.我似乎无法找到任何可行的答案.
我正在使用VS 2010中的Entity Framewok 4.0 POCO和WCF服务开发Dot Net项目.由于性能改进和表值功能支持,我将切换到Ef 5.0和VS 2012.
但我搜索了很多,没有找到任何poco生成器模板或DBcontext生成器模板,支持在VS 2012和EF5.x中使用DataContract和DataMember属性.
[DataContract(IsReference = true)]
[KnownType(typeof(Transactions))]
public partial class Accounts
{
[DataMember]
public int AccountID { get; set; }
[DataMember]
public string AccountCode { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我的问题是:
1-有没有人有这样的模板在VS2012中工作?
2-有没有人知道EF 5.x DBContext生成器中所需的更改,以自定义模板以支持WCF所需的属性.
我的时间很少,我真的需要帮助.
感谢您的帮助或指导.
所有,
为嵌入式sql开发验证应用程序
我将使用ansi c或c ++作为开发语言
我在哪里获得lex和yacc的sql语法?
是否可以按层次结构 id 对层次结构中的 sql 数据进行排序,然后对每个级别按字母顺序排序?
假设我们有一个员工表,其中根据员工 ID 列出了组织层次结构
鲍勃 (5) 有菲尔 (17) 和查理 (28) 向他汇报,乔西 (6) 有泰勒 (15) 和迈克 (56) 向她汇报。
如果按 HierarchyID 排序,它将如下所示:
鲍勃 (/5/)
--菲尔 (/5/17/)
--查理 (/5/28/)
乔西 (/6/)
--泰勒 (/6/15/)
--迈克 (/6/56) /)
但让它看起来像这样可能更有意义
鲍勃
--
查理--菲尔·
乔西
--迈克
--泰勒
这是否可能而又不会变得太复杂?
c# ×3
sql ×3
.net ×1
arc4random ×1
asp.net ×1
callstack ×1
debugging ×1
frameworks ×1
gridview ×1
hierarchy ×1
hierarchyid ×1
iphone ×1
java ×1
lex ×1
objective-c ×1
oop ×1
poco ×1
ruby ×1
sql-server ×1
uml ×1
wcf ×1
yacc ×1