这个问题与语言无关,但我是C#家伙所以我使用术语POCO来表示一个只能预先形成数据存储的对象,通常使用getter和setter字段.
我只是将我的领域模型重新设计成超级PCOO,并且对于如何确保属性值在域中有意义而留下了一些问题.
例如,服务的EndDate不应超过服务所在合同的EndDate.但是,将检查放入Service.EndDate设置器似乎违反了SOLID,更不用说随着需要完成的验证数量增加,我的POCO类将变得混乱.
我有一些解决方案(将在答案中发布),但它们有其缺点,我想知道解决这一难题的最佳方法是什么?
language-agnostic separation-of-concerns solid-principles modular-design
我需要向用户TARGETUSER提供选择/插入/更新用户SOURCEUSER的所有表的权限(我可以从这里看出这一切)以及运行所有存储过程的能力.
基本上,如果我能为TARGETUSER提供SOURCE_USER对象的所有非ddl活动的能力,我不会抱怨.我该怎么做呢?
我正在考虑jQuery $(document).ready事件,我发现我从未见过有人将它应用于除此之外的任何事情$(document).它还有其他合法用途吗?
我不喜欢在我的访问修饰符之前放置'private'.默认情况下它们都是私密的,它只是视觉上的混乱.
如何关闭resharper不断标记"私人"的所有内容?
我有一个包含编号目录的目录:
Archive
|-1
|-2
|-3
|-...
Run Code Online (Sandbox Code Playgroud)
我需要以数字方式创建下一个目录.我正在做的事情
$lastArchive = ls .\Archive | sort Name | select -Last 1
$dirName = '1'
if($lastArchive) {
$dirName = ([int]$lastArchive.Name)+1
}
Run Code Online (Sandbox Code Playgroud)
这当然是失败的,一旦我们达到10,通过排序规则跟随1而不是9.我需要排序表达式实际上是[int]$_.Name- 我将如何做到这一点?
这就是我想要的.
我能够找到为客户端连接 coffeescript的推荐方法是使用connect-assets.这似乎需要使用jade helper来实际编译coffeescript,例如.
!=js('monalisa.js')
Run Code Online (Sandbox Code Playgroud)
似乎编译monalisa.coffee并生成正确的<script>标记.现在我想使用require.js,在这里我偶然发现.如何确保connect-assets在不使用jade helper的情况下正确编译所有内容?
这是我相当简单的app.js:
require('coffee-script');
var express = require('express')
, http = require('http')
, path = require('path')
, connectAssets = require('connect-assets');
var publicDir = path.join(__dirname, 'public');
var app = express();
app.configure(function(){
app.set('port', process.env.PORT || 3000);
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.bodyParser());
app.use( connectAssets() );
app.use('/public', express.static(publicDir));
app.use(express.logger());
app.use(express.methodOverride());
app.use(app.router);
});
app.configure('development', function(){
app.use(express.errorHandler({
dumpExceptions: true,
showStack: true
}));
});
app.get('/', require('./routes').index);
app.get('/monalisa', require('./routes/monalisa').monalisa);
http.createServer(app).listen(app.get('port'), …Run Code Online (Sandbox Code Playgroud) 我刚刚在我的项目中升级了log4net,并且遇到了一些程序集绑定问题,因为一个组件依赖于旧版本的log4net.
该组件预期的版本是
log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821
Run Code Online (Sandbox Code Playgroud)
我的版本是
log4net, Version=1.2.12.0, Culture=neutral, PublicKeyToken=669e0ddf0bb1aa2a
Run Code Online (Sandbox Code Playgroud)
如何正确解析此绑定(只有一个api差异,此组件无关紧要).
我已经尝试将以下内容添加到我的web.config但它不起作用.
<dependentAssembly>
<assemblyIdentity name="log4net" publicKeyToken="1b44e1d426115821" culture="neutral" />
<bindingRedirect oldVersion="1.2.10.0" newVersion="1.2.12.0" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud) .net assembly-resolution .net-assembly assembly-binding-redirect
我正在努力改进ApprovalTests框架中的pdf scrubber并查看使用PdfSharp生成的简单pdf我看到它的内容如下.
有谁知道底部的ID字段是什么?
%PDF-1.4
%ÓôÌá
1 0 obj
<<
/CreationDate(D:20131119194420-06'00')
/Creator(PDFsharp 1.32.3057-g \(www.pdfsharp.net\))
/Producer(PDFsharp 1.32.3057-g \(www.pdfsharp.net\))
>>
endobj
2 0 obj
<<
/Type/Catalog
/Pages 3 0 R
>>
endobj
3 0 obj
<<
/Type/Pages
/Count 1
/Kids[4 0 R]
>>
endobj
4 0 obj
<<
/Type/Page
/MediaBox[0 0 612 792]
/Parent 3 0 R
/Contents 5 0 R
/Resources
<<
/ProcSet [/PDF/Text/ImageB/ImageC/ImageI]
/ExtGState
<<
/GS0 6 0 R
>>
/Font
<<
/F0 8 0 …Run Code Online (Sandbox Code Playgroud) 采用有效聚合设计中提出的具有多个版本的产品的域.在本文中,Vaughn得出的结论是,Product和Release都应该是它们自己的聚合根.
现在假设我们添加了一个功能
我不是具有特定需求的PM,但他们希望能够在UI中对发布进行排序似乎是合理的.
我不确定这应该如何运作.每个Release都有自己的订单属性,但重新排序会涉及在同一个交易中更改多个聚合.另一方面,如果该信息存储在Product聚合中,您必须拥有一个product.setRelaseOrder(ReleaseId[])类似于奇怪的数据的方法,以存储在与Releases完全不同的地方.更糟糕的是,添加一个版本将再次涉及修改两个不同的聚合!我们还能做什么?ProductReleaseSortOrder可以是它自己的聚合,但这听起来完全荒谬!
那么该怎么办?目前我仍然倾向于let-product-manage-it选项,但这里的正确性是什么?
刚刚Assembly.LoadModule()在intellisense中注意到了.我看到它返回对基本未记录的Module类的引用.
我知道反思很好,我从来没有听说过模块吗?这些是什么?这个名字很诱人.
.net ×2
coffeescript ×1
events ×1
express ×1
grant ×1
jquery ×1
node.js ×1
oracle ×1
pdf ×1
permissions ×1
powershell ×1
reflection ×1
requirejs ×1
resharper ×1
settings ×1
sorting ×1