我想在MigraDoc文档的标题中添加一个图像,但是在文档生成中硬编码文件系统路径对于许多问题来说有点问题 - 其中最重要的是它让我有点不安,但也,保持部署简单(r).
如果我可以将图像作为资源嵌入到程序集中,并且只是在PDF需要时提取它,那么在我看来这是理想的,但似乎没有任何简单或内置的方法来执行此操作.任何技巧或想法?
我有一个小的对象层次结构,通常从a中的数据构造Stream
,但对于某些特定的子类,可以从更简单的参数列表合成.在从子类链接构造函数时,我遇到了一个问题,即确保处理基类构造函数所需的合成流.它没有逃过我,以IDisposable
这种方式使用对象可能只是脏池(plz建议?),原因我没有考虑过,但是,除了这个问题,它似乎相当简单(和良好的封装).
代码:
abstract class Node {
protected Node (Stream raw)
{
// calculate/generate some base class properties
}
}
class FilesystemNode : Node {
public FilesystemNode (FileStream fs)
: base (fs)
{
// all good here; disposing of fs not our responsibility
}
}
class CompositeNode : Node {
public CompositeNode (IEnumerable some_stuff)
: base (GenerateRaw (some_stuff))
{
// rogue stream from GenerateRaw now loose in the wild!
}
static Stream GenerateRaw (IEnumerable some_stuff)
{
var …
Run Code Online (Sandbox Code Playgroud) C# 有一个很棒的语法功能,对于需要委托类型的函数,您可以传入一个“方法组”,如下所示:
"string".Count (Char.IsWhiteSpace);
Run Code Online (Sandbox Code Playgroud)
而不是(相对而言)嘈杂:
"string".Count (c => Char.IsWhiteSpace (c));
Run Code Online (Sandbox Code Playgroud)
(编辑:更好的例子)。
我想在 Javascript 中做类似的事情,它对于匿名函数的语法要嘈杂得多:
var name = "foobar".replace (/^\w/, function (c) { return c.toUpperCase (); });
Run Code Online (Sandbox Code Playgroud)
我已经使用and尝试过对String.prototype.replace
,的函数形式的参数进行各种尝试和排列,但是传入的字符串参数(在上面的示例中)显然不在范围内(我最终得到了在最好的情况下和最坏的情况下都没有什么帮助)。call
apply
c
this
toUpperCase
DOMWINDOWoobar
TypeError
显然,我可以像上面那样包装函数,生活可以继续,但是有没有办法做一些类似于方法组应用程序的事情,或者传递该函数以便在匹配的字符上正确调用它?
在数据库世界中,我们进行了规范化.您可以从设计开始,转动步骤并最终使用正常形式的数据库.这是基于数据的语义完成的,可以被认为是一系列设计重构.
在面向对象的设计中,我们拥有SOLID原则和各种其他特殊设计指南.
您是否认为可以为OO定义等效的正规形式,这样一系列重构步骤可以将程序性的代码片段(或者设计不当的OO设计)转换为正确的(在一些定义明确的意义上)相同的功能?
(NB.很高兴制作这个社区wiki)
theory oop normalization relational-database solid-principles
c# ×2
.net ×1
constructor ×1
idisposable ×1
javascript ×1
migradoc ×1
oop ×1
pdfsharp ×1
theory ×1