我想知道是否有一种编写方法或类的方法可以向任何方法添加一些在许多方法之间共享的代码.这些方法返回不同的东西,其中一些只是无效的.
下面是方法中重复的代码的一部分.
StartTimer(MethodBase.GetCurrentMethod().Name);
try
{
// Actual method body
}
catch (Exception ex)
{
bool rethrow = ExceptionPolicy.HandleException(ex, "DALPolicy");
if (rethrow)
{
throw;
}
}
finally
{
StopTimer(MethodBase.GetCurrentMethod().Name);
}
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
Nix解决方案应用于上面的代码
public T WrapMethod<T>(Func<T> func)
{
StartTimer(func.Method.Name);
try
{
return func();
}
catch (Exception ex)
{
bool rethrow = ExceptionPolicy.HandleException(ex, "DALPolicy");
if (rethrow)
{
throw;
}
}
finally
{
StopTimer(func.Method.Name);
}
return default(T);
}
Run Code Online (Sandbox Code Playgroud) 我正在优化一些主要瓶颈正在运行的代码并访问一个非常大的类似结构的对象列表.目前我正在使用namedtuples,以提高可读性.但是使用'timeit'的一些快速基准测试表明,在性能是一个因素的情况下,这确实是错误的方法:
用a,b,c命名的元组:
>>> timeit("z = a.c", "from __main__ import a")
0.38655471766332994
Run Code Online (Sandbox Code Playgroud)
使用__slots__a,b,c的类:
>>> timeit("z = b.c", "from __main__ import b")
0.14527461047146062
Run Code Online (Sandbox Code Playgroud)
带键a,b,c的字典:
>>> timeit("z = c['c']", "from __main__ import c")
0.11588272541098377
Run Code Online (Sandbox Code Playgroud)
具有三个值的元组,使用常量键:
>>> timeit("z = d[2]", "from __main__ import d")
0.11106188992948773
Run Code Online (Sandbox Code Playgroud)
使用常量键列出三个值:
>>> timeit("z = e[2]", "from __main__ import e")
0.086038238242508669
Run Code Online (Sandbox Code Playgroud)
具有三个值的元组,使用本地密钥:
>>> timeit("z = d[key]", "from __main__ import d, key")
0.11187358437882722
Run Code Online (Sandbox Code Playgroud)
使用本地密钥列出三个值:
>>> timeit("z = e[key]", "from __main__ import e, key")
0.088604143037173344
Run Code Online (Sandbox Code Playgroud)
首先,这些小timeit测试是否会使它们无效?我跑了几次,以确保没有任何随机系统事件抛出它们,结果几乎相同.
看起来字典在性能和可读性之间提供了最佳平衡,而类别排在第二位.这是不幸的,因为为了我的目的,我还需要对象是序列式的; 因此我选择了namedtuple. …
.NET 4.0意味着与3.5并行运行,并且不会运行3.5个应用程序,这让我担心必须指示我的用户下载.NET 3.5而不仅仅是"最新版本".
我在博客中看到4.0安装程序也将安装3.5,如果它还没有安装但我现在无法测试,有没有人试过这个或者从可靠来源得到答案?
使用WebDriverSelenium 2.0a2,我无法检查元素是否可见.
WebDriver.findElement返回a WebElement,遗憾的是它没有提供isVisible方法.我可以通过使用WebElement.clear或WebElement.click两者抛出来解决这个问题ElementNotVisibleException,但这感觉很脏.
有更好的想法吗?
如果我输出格式化的日期如下:
DateTime.Parse("2010-06-02T15:26:37.789 +01:00").ToString("HH:mm:sszzz")
我得到了预期的结果:
15:26:37+01:00
但是,如果我解析相同的日期,请转换为UTC并输出格式如下:
DateTime.Parse("2010-06-02T15:26:37.789 +01:00").ToUniversalTime().ToString("HH:mm:sszzz")
我明白了:
14:26:37+01:00
现在这两个日期,本地和UTC版本应该完全相同,但输出的文本代表两个不同的时间.
为什么是这样?
为了澄清,我预计UTC中的时间为14:26:37,因为DST元素被UTC删除.我没想到它仍然有一个偏移量.上述两个时间不相等,而15:26:37+ 01:00和14:26:37+ 00:00.
我需要修改这个正则表达式
href=\"(.*)\"
Run Code Online (Sandbox Code Playgroud)
哪个匹配...
href="./pothole_locator_map.aspx?lang=en-gb&lat=53.153977&lng=-3.533306"
Run Code Online (Sandbox Code Playgroud)
要不匹配这个......
href="./pothole_locator_map.aspx?lang=en-gb&lat=53.153977&lng=-3.533306&returnurl=AbandonedVehicles.aspx"
Run Code Online (Sandbox Code Playgroud)
试过这个,但没有运气
href=\"(.*)\"(?!&returnurl=AbandonedVehicles.aspx)
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感激.
谢谢,Al.
我正在努力将VB6应用程序移植到C#(Winforms 3.5),同时我正在尝试将功能分解为各种类(即数据库类,数据验证类,字符串操作类).
现在,当我尝试在调试模式下运行程序时,程序暂停,然后崩溃并发生StackOverFlowException.VS 2008表明无限递归原因.
我一直试图追踪可能导致这种递归的原因,现在我唯一的假设是类初始化(我在每个类的标题(?)中做).
我的想法是这样的:
这有意义还是我应该在别处寻找?
UPDATE1(代码示例):
的MainForm
namespace john
{
public partial class frmLogin : Form
{
stringCustom sc = new sc();
Run Code Online (Sandbox Code Playgroud)
stringCustom
namespace john
{
class stringCustom
{
retrieveValues rv = new retrieveValues();
Run Code Online (Sandbox Code Playgroud)
retrieveValues
namespace john
{
class retrieveValues
{
stringCustom sc = new stringCustom();
Run Code Online (Sandbox Code Playgroud) 我不知道是否有可能做到这一点,但我尝试了几种方法似乎没有任何效果.基本上我需要从几个包含相同类定义的文件中访问相同的静态成员.
// Filename: S.h
class S {
public:
static int foo;
static void change(int new_foo) {
foo = new_foo;
}
};
int S::foo = 0;
Run Code Online (Sandbox Code Playgroud)
然后在类定义(其他.cpp文件)中我有:
// Filename: A.h
#include "S.h"
class A {
public:
void do_something() {
S::change(1);
}
};
Run Code Online (Sandbox Code Playgroud)
在另一个文件中:
// Filename: program.cpp
#include "S.h"
#include "A.h"
int main (int argc, char * const argv[]) {
A a = new A();
S::change(2);
std::cout << S::foo << std::endl;
a->do_something();
std::cout << S::foo << std::endl;
}
Run Code Online (Sandbox Code Playgroud)
现在,我希望第二个函数调用将S :: foo更改为1,但输出仍然是:
2 …Run Code Online (Sandbox Code Playgroud) NSMutableArray *array = [[NSArray alloc] initWithObjects:@"Apranax Forte",
@"Actified",
@"Zostex 125 MG",
@"Zoprotec 30 MG",
@"Arveles 25 MG"];
[array insertObject:@"Ahmet" atIndex:[array count] + 1]; // Neither work
[array addObject:@"Ahmet"]
Run Code Online (Sandbox Code Playgroud)
我想将Ahmet字符串附加到NSMutableArray数组对象......任何人都可以帮助我吗?