小编Pau*_*ner的帖子

Exception工厂的价值是什么?

在查看从WCF库反映的一些代码时,我看到了用于创建异常的模式:

if(argument == null)
{
    throw Error.ArgumentNull("argument");
}
Run Code Online (Sandbox Code Playgroud)

空参数是最简单的示例,其他类型的异常可通过静态错误类获得.

这种工厂模式的价值是多少?为什么不使用new运算符并简单地调用ArgumentNullException构造函数?

.net factory exception

6
推荐指数
2
解决办法
914
查看次数

C#如何用正则表达式替换重音不敏感的字符串?

我想在字符串中执行不区分重音的替换.我希望'客户'匹配'cliënt',反之亦然.

我的代码看起来像这样:

Regex reg = new Regex("client");
string result = reg.Replace("here goes the content with client and cliënt", "replacementWith");
Run Code Online (Sandbox Code Playgroud)

那么,我如何确保'客户'匹配'客户'和'cliënt',反之亦然?

c# regex

6
推荐指数
1
解决办法
4768
查看次数

检测finally块中的异常

我正在尝试编写一种Dispose具有抛出异常的潜力的方法.

try-finally通过using声明以一种模式调用dispose :

using(var widget = new Widget())
{
   widget.DoYourThing();
}
Run Code Online (Sandbox Code Playgroud)

问题是如果Dispose方法引发异常,它将替换在using块体内可能引发的任何异常.通常,此异常不如在体内抛出的异常有用.

我想要的是以Dispose这样的方式编写方法,即如果正在进行中的异常,它会吞下自己的异常.像下面这样的东西是理想的:

protected virtual void Dispose(bool disposing)
{
    try
    {
        this.Shutdown();
    }
    catch(Exception)
    {
        this.Abort();

        // Rethrow the exception if there is not one already in progress.
        if(!Runtime.IsHandlingException)
        {
            throw;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有什么能提供这些信息吗?

.net exception-handling

6
推荐指数
1
解决办法
371
查看次数

如何查看针对localdb数据库执行的SQL语句?

我正在运行LocalDB来开发我的应用程序,并希望看到我的应用程序从其各种组件执行的SQL语句.我可以使用一种工具来捕获这些语句吗?

sql profiling localdb

6
推荐指数
1
解决办法
1422
查看次数

使用 python 的桌面 GUI 中的 MVC 模式

我的问题如下。来自网络背景,我没有问题可以做到这一点,但在 Python 桌面应用程序中,我真的看不出什么是根据 MVC 模式组织代码的最佳方式。

我想根据用户输入创建一个窗口,当按下按钮时,它会显示数据库中可用的类似条目。窗户是我的看法。

所以基本上这些是关系:

在此处输入图片说明

1)通讯控制器 --> 查看

控制器有一个视图实例,可以使用它公开的方法,例如 view.show_data()。我认为这是要走的路。

# Controller
my_view = View()
...
my_view.show_data(whatever_data)
Run Code Online (Sandbox Code Playgroud)

2)通讯视图--> 控制器

当用户插入一些文本时,必须触发控制器中的一个方法,以便它可以向模型询问数据库中的必要数据。问题是我不知道视图告诉控制器它必须触发那个方法的最佳方式是什么。

我的第一个想法是将控制器的引用传递给视图,并在视图上绑定事件,如下所示:

# Controller
my_view = View(self)
my_model = Model()
...

def on_user_input(self):
     # process the input
     user_input = ...
     self.my_model.method_to_get_info(user_input)
Run Code Online (Sandbox Code Playgroud)

和观点:

# View
def __init__(self, controller):
    self.controller_reference = controller
    self.launch_gui()
    self.config_binds()

def launch_gui(self):
    # ... configure all the GUI itself
    self.button = ...


def config_binds(self):
    self.button.Bind(wx.EVT_BUTTON, self.controller_reference.on_user_input())
Run Code Online (Sandbox Code Playgroud)

但我认为这种“闭环”关系并不是一个非常干净的解决方案。视图在控制器中被引用,控制器在视图中被引用。我认为它在视图和控制器之间建立了紧密的关系。

有什么方法可以做到这一点?

python model-view-controller user-interface controller view

6
推荐指数
1
解决办法
7560
查看次数

你如何检测CSS动画何时开始和结束JavaScript?

我习惯用JavaScript动画元素.我发现用CSS3做起来更简单.

使用JavaScript如何检测CSS动画何时开始以及何时结束?有什么办法吗?

javascript css animation

6
推荐指数
1
解决办法
8930
查看次数

如何使用基于 WiX 的安装程序为 .NET 应用程序创建性能计数器?

我正在为我的基于 .NET 的网站创建一个基于 WiX 的安装程序。

本网站的一部分涉及我想使用安装程序创建的性能计数器(计数器需要提升权限才能创建,这是网站不应该拥有的)。

我已经阅读WiX 提供的关于安装计数器主题的文档,但是它看起来是针对本机代码应用程序的,而且似乎比它值得付出的努力更多。

如何使用 WiX 安装程序创建新的性能计数器?

.net wix

5
推荐指数
1
解决办法
2314
查看次数

如何在App域之间传递事件?

我有两个应用程序域,一个父级创建子域.在子域中,有一个MarshalByRef对象,使用.NET Remoting进行通信.在父域中运行的对象作为应用程序函数的一部分调用远程对象的包装器:

public class ScanningTask : Task
{
    private class Loader : MarshalByRef
    {
        public void Load(IEnumerable<string> paths)
        {
            ...
        }

        public event EventHandler<LoadEventArgs> OnLoad;
    }

    public void RunTask()
    {
        var domain = AppDomain.CreateDomain("LoadDomain");

        var loader = (Loader)domain.CreateInstanceFromAndUnwrap(
            typeof(Loader).Assembly.Location,
            typeof(Loader).FullName);

        loader.Load(...);

        AppDomain.Unload(domain);
    }
}
Run Code Online (Sandbox Code Playgroud)

大多数代码都是为了简洁而删除

Loader对象公开了OnLoad我想要在父域中捕获的事件.如果我只是添加一个事件处理程序委托,它会尝试序列化ScanningTask到子域中并抛出一个关于它不可序列化的异常.

我真正想要的是让事件跨域传播.任何聪明的建议如何?

.net events appdomain .net-remoting

5
推荐指数
1
解决办法
5948
查看次数

MSBuild ResolveProjectReferences错误

我的MSBuild构建脚本在所有开发机器上执行正常,但无法在构建服务器上运行,但Trunk构建除外.分支全部失败,并显示以下警告,指出问题的根源:

Target "ResolveProjectReferences":
    C:\WINDOWS\Microsoft.NET\Framework\v3.5\Microsoft.Common.targets (0,0):  
        warning : The referenced project '..\..\..\Class Library\
            Company.BusinessModel\Company.BusinessModel.csproj' does not exist.
Run Code Online (Sandbox Code Playgroud)

我无法理解为什么这个错误甚至出现 - 我已经验证了(相对于正在处理的csproj)引用的项目确实存在.将签出的代码复制(文件复制)到我的本地计算机并运行脚本,构建按预期完成.

这里有什么明显的错误吗?我能检查一下试图解决这个谜团吗?

编辑:

我已经尝试针对项目运行MSBuild单独提出构建错误,因此问题的其余部分不是问题,只是关于这个特定的.csproj文件.

msbuild msbuild-4.0

5
推荐指数
1
解决办法
1511
查看次数

有没有办法在项目创建时设置项目的默认命名空间?

在Visual Studio中创建项目时,用于项目的名称用于:

  • 命名项目文件
  • 命名项目文件夹
  • 生成项目的默认命名空间

前两个值有些相关,因此从约定的角度来看它们保持相同是有意义的,但是使用命名空间的值会导致问题:

要么将项目名称设置为名称空间,导致文件路径非常长(当它们超过Windows的248长度限制时,通常会导致MSBuild出现问题,您会得到一个默认命名空间,它不符合正常的命名约定,然后必须使用"查找和替换"进行更改.

我已经解决了这个问题已有12年了,而且它没有变得更有趣.

是否有一些方法可以在您设置项目时单独设置这些值?

projects-and-solutions project-template visual-studio-2012

5
推荐指数
1
解决办法
2365
查看次数