在阅读了Head First Design Patterns一书并使用了许多其他设计模式之后,我试图理解Observer模式.这是不是已经使用.NET Framework中的事件实现了?
编译器是否可以从生产代码中删除用于调试目的的语句(例如日志记录)?调试语句需要以某种方式标记,可能使用注释.
设置属性(debug = true)很容易并在每个调试语句中检查它,但这会降低性能.如果编译器只是简单地使调试语句消失,那将是很好的.
我在内存中有一个树结构,我想使用Django模板在HTML中呈现.
class Node():
name = "node name"
children = []
Run Code Online (Sandbox Code Playgroud)
将有一些对象root是a Node,并且children是Nodes 的列表.root将在模板的内容中传递.
我已经找到了关于如何实现这一点的讨论,但是海报表明这在生产环境中可能并不好.
有人知道更好的方法吗?
我有一个简单的Web服务操作,如下所示:
[WebMethod]
public string HelloWorld()
{
throw new Exception("HelloWorldException");
return "Hello World";
}
Run Code Online (Sandbox Code Playgroud)
然后我有一个客户端应用程序,它使用Web服务,然后调用该操作.显然会抛出异常:-)
try
{
hwservicens.Service1 service1 = new hwservicens.Service1();
service1.HelloWorld();
}
catch(Exception e)
{
Console.WriteLine(e.ToString());
}
Run Code Online (Sandbox Code Playgroud)
在我的catch-block中,我想要做的是提取实际异常的Message以在我的代码中使用它.捕获的异常是一个SoapException,这很好,但它的Message属性是这样的......
System.Web.Services.Protocols.SoapException: Server was unable to process request. ---> System.Exception: HelloWorldException
at WebService1.Service1.HelloWorld() in C:\svnroot\Vordur\WebService1\Service1.asmx.cs:line 27
--- End of inner exception stack trace ---
Run Code Online (Sandbox Code Playgroud)
......而且InnerException是null.
我想要做的是提取(我的样本中的文本)的Message属性,任何人都可以帮助吗?如果你可以避免它,请不要建议解析的属性.InnerExceptionHelloWorldExceptionMessageSoapException
我想知道在Windows平台上执行某些脚本作业的选项有哪些.我需要文件操作,注册表编辑等功能.可以使用脚本工具编辑文件吗?Windows脚本工具还提供哪些其他功能?可以使用脚本语言完成使用Windows GUI完成的所有操作吗?
在C#中,我想调用新添加的项目到ListView的标签编辑.基本上,如果我点击此处添加方案,只要添加新项目,我希望文本标签处于用户可编辑状态.谢谢!
我将尝试使用这个问题的格式,我非常愿意接受有关更好的方法来处理它的建议.
我不想只是在问题中转储一堆代码,所以我已经发布了该类的代码refactormycode.
我的想法是人们可以在这里发布代码片段或进行更改refactormycode并将链接发布回他们的重构.基于此,我会做出投票并接受答案(假设有一个明确的"赢家").
无论如何,对班级本身:
我看到很多关于getter/setter类方法的争论,最好是直接访问简单的属性变量,还是每个类都定义了明确的get/set方法,等等等等等等.我喜欢使用显式方法的想法,以防您以后需要添加更多逻辑.然后,您不必修改使用该类的任何代码.但是我讨厌有一百万个看起来像这样的函数:
public function getFirstName()
{
return $this->firstName;
}
public function setFirstName($firstName)
{
return $this->firstName;
}
Run Code Online (Sandbox Code Playgroud)
现在我确定我不是第一个这样做的人(我希望有一个更好的方法可以让别人向我建议).
基本上,PropertyHandler类有一个__call魔术方法.通过__call以"get"或"set"开头的任何方法然后被路由到将值设置或检索到关联数组的函数.获取或设置后,数组中的键是调用方法的名称.因此,如果进入__call的方法是"getFirstName",则数组键是"FirstName".
我喜欢使用__call,因为它会自动处理子类已经定义了"getFirstName"方法的情况.我的印象(我可能错了)是__get和__set魔术方法不这样做.
所以这是一个如何工作的例子:
class PropTest extends PropertyHandler
{
public function __construct()
{
parent::__construct();
}
}
$props = new PropTest();
$props->setFirstName("Mark");
echo $props->getFirstName();
Run Code Online (Sandbox Code Playgroud)
请注意,PropTest实际上没有"setFirstName"或"getFirstName"方法,PropertyHandler也没有.所有这一切都是在操纵数组值.
另一种情况是你的子类已经扩展了其他东西.由于PHP中不能具有真正的多重继承,因此可以使子类具有PropertyHandler实例作为私有变量.您必须再添加一个函数,但事情的行为方式完全相同.
class PropTest2
{
private $props;
public function __construct()
{
$this->props = new PropertyHandler();
}
public function __call($method, $arguments)
{
return $this->props->__call($method, $arguments);
}
}
$props2 = new PropTest2();
$props2->setFirstName('Mark');
echo $props2->getFirstName(); …Run Code Online (Sandbox Code Playgroud) 有没有人有一个值得信赖的Proper Case或PCase算法(类似于UCase或Upper)?我在寻找的东西取一个值,如"GEORGE BURDELL"或"george burdell"并将其转化为"George Burdell".
我有一个简单的处理简单案例.理想的是拥有可以处理诸如"O'REILLY"并将其转化为内容的东西"O'Reilly",但我知道这更难.
如果这简化了事情,我主要关注英语.
更新:我使用C#作为语言,但我可以从几乎任何东西转换(假设存在功能).
我同意麦当劳的痤疮是一个艰难的.我想提一下我的O'Reilly例子,但没有在原帖中.