小编Dav*_*ave的帖子

.NET Regex是否支持全局匹配?

我无法在网上找到任何关于此的内容.有RegexOptions,但它没有Global作为其选择之一.内联修饰符列表也未提及全局匹配.

简而言之,我有一个正则表达式来解析类似的东西

--arga= "arg1"  --argb ="arg2" 
Run Code Online (Sandbox Code Playgroud)

使用此正则表达式分隔参数名称/值对:

--(\\w+)\\s*=\\s*\"(\\w+)\"\\s*
Run Code Online (Sandbox Code Playgroud)

但.NET Regex类并不是全局(迭代).因此,为了让我能够使用它,我必须做一个匹配,然后从参数字符串中删除它,并一遍又一遍地循环,直到我用完所有的参数.

运行一次正则表达式会更好,然后遍历匹配组以获取名称值对.这可能吗?我错过了什么?

.net c# regex

38
推荐指数
1
解决办法
2万
查看次数

无状态(谷歌代码)和Windows工作流程之间的比较

我开始认为我应该抛弃Windows WF而不是更简单的东西.我不一定需要在很长一段时间内暂停工作流程执行并在以后恢复它们.但是,我想要一个简单的状态机框架,它具有基本的挂起/恢复/中止(没有序列化).

我已经从Google Code下载了无状态框架,我将开始玩它,但是很想听听其他.NET程序员使用的内容.

编辑无国界似乎很容易实现,但我想知道它是否适合糖果机.在自动化中,我总是对如何使用状态机感到矛盾.虽然我使用术语"状态机",但我这样做很松散,因为我更像是一个流程图.我没有使用状态来表示机器所处的当前模式,而是使用它来执行函数.所以在这种情况下使用Stateless,我实际上是使用从一个状态到下一个状态的转换作为在我的糖果机控制器中调用函数的机制.思考?

.net c# state-machine workflow-foundation

33
推荐指数
1
解决办法
1万
查看次数

Kickstarter是否有公共API?

我正在寻找一个kickstarter API(但没有运气找到一个).

我确实在github上看到了一个抓取API,但这并不是我想要的.

api kickstarter

30
推荐指数
3
解决办法
3万
查看次数

C#中的XML多行注释 - 我做错了什么?

根据这篇文章,可以获得多行XML注释 - 而不是使用///,使用/** */.这是我对多行注释的解释,以及我想要发生的事情:

/**
 * <summary>
 * this comment is on line 1 in the tooltip
 * this comment is on line 2 in the tooltip
 * </summary>
 */
Run Code Online (Sandbox Code Playgroud)

但是,当我使用这个表单时,当我将鼠标悬停在我的代码中时弹出的工具提示是单行的,即它看起来就像我写了这样的评论:

/// <summary>
/// this comment is on line 1 in the tooltip
/// this comment is on line 2 in the tooltip
/// </summary>
Run Code Online (Sandbox Code Playgroud)

这种行为实际上是否仍然可以在VS2008中使用?

编辑

gabe指出我误解了"多线"意味着什么,我实际上需要使用<para><br>获得我想要的效果.我继续使用,<br>因为我想控制断线发生的位置,即

/// <summary>
/// this comment is on line 1 in …
Run Code Online (Sandbox Code Playgroud)

c# comments multiline xml-comments visual-studio-2008

26
推荐指数
2
解决办法
1万
查看次数

仅在XAML中对组合框进行排序

我很惊讶在此之前没有人问这个......好吧,至少我在这里或其他地方找不到答案,实际上.

我有一个与ObservableCollection数据绑定的ComboBox.一切都很好,直到那些人想要内容排序.没问题 - 我最终改变了简单的属性:

public ObservableCollection<string> CandyNames { get; set; } // instantiated in constructor
Run Code Online (Sandbox Code Playgroud)

对于这样的事情:

private ObservableCollection<string> _candy_names; // instantiated in constructor
public ObservableCollection<string> CandyNames
{
    get {
        _candy_names = new ObservableCollection<string>(_candy_names.OrderBy( i => i));
        return _candy_names;
    }
    set {
        _candy_names = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

这篇文章真的有两个问题:

  1. 如何在XAML中对字符串的简单ComboBox进行排序.我已经研究了这个,只能找到有关SortDescription类的信息,这是我能找到的最接近的实现,但它不适用于ComboBox.
  2. 一旦我在代码隐藏中实现了排序,我的数据绑定就被打破了; 当我向ObservableCollection添加新项目时,ComboBox项目没有更新!我没有看到发生了什么,因为我没有为我的ComboBox指定一个名称并直接操作它,这通常会打破绑定.

谢谢你的帮助!

sorting wpf xaml combobox

24
推荐指数
1
解决办法
2万
查看次数

奇怪的问题,除非单击鼠标,否则不会重新启用Button

我的应用程序是使用WPF中的MVVM模式编写的,我的所有Buttons都使用Command绑定来执行模型中的代码.所有命令都在CanExecute中具有代码,以确定绑定Button的Enabled状态.逻辑运行完美,但在所有情况下,除非我点击GUI中的其他位置,否则GUI将保持禁用状态.

例如,我有一个名为Discard Candy的按钮.当我单击此按钮时,它会在线程池线程中启动一个进程,该进程将名为Running的bo​​ol属性设置为true.由于Discard Candy命令的CanExecute方法看起来像这样

public bool CanExecute(object parameter)
{
  return !Running;
}
Run Code Online (Sandbox Code Playgroud)

一旦过程开始,该按钮将被禁用.问题是当进程完成时,Running会设置为false,但GUI不会更新,即Discard Candy不会重新启用.

但是,如果我点击GUI中的任何位置,例如在窗口或标题栏上,则会立即启用Discard Candy按钮.所以逻辑是有效的,但事情正在发生,我只是不明白.有人可以向我解释一下这种行为吗?

编辑 - 到目前为止,它听起来像CommandManager.InvalidateRequerySuggested没有帮助人.我打算试一试,但此刻我有点担心.我确实按照推荐的链接,这样做决定阅读更多有关MVVM光工具包的信息.这听起来不错 - 有没有人在这里使用它并且能够确认它没有表现出我到目前为止看到的问题?虽然我计划在下一个主要版本中尝试MVVM轻型工具包.我的应用程序,我不想重做我目前所有的命令,这就是为什么我可能会开始使用CommandManager.InvalidateRequerySuggested,所以我们都可以在这里得到另一个关于它的用处的数据点.

编辑#2 - 非常有趣,MVVM light工具包实际上依赖于CommandManager.InvalidateRequerySuggested以支持UI禁用/重新启用命令的能力.作者说:

"严格地说,在WPF中,如果你的命令绑定到CommandManager监视的控件,你不必自己引发CanExecuteChanged事件.你可以让CommandManager处理这种情况.也就是说,外部事件可能还可以改变UI的状态.假设UI应该从上午9点到下午5点启用,然后在晚上禁用.用户没有触发UI,所以代码应该(礼貌地)请求CommandManager重新查询状态命令.这是通过调用InvalidateRequerySuggested CommandManager上的方法实现的.正如你猜到了,RelayCommand类的方法RaiseCanExecuteChanged做到了这一点. "

data-binding wpf command mvvm

23
推荐指数
2
解决办法
8085
查看次数

处理导致空序列等的LINQ语句的最佳实践?

...我有点困惑,或者不确定如何处理LINQ语句中出现的错误.我只是喜欢能够拉动一个或多个项目的集合,基于某些条件......一个单一的代码行.那真是太棒了.

But where I'm torn is with the error handling, or the boundary condition checking. If I want to retrieve an item using First(), and no item satisfies my query, an exception gets thrown. That's a bit of a bummer because now I have to wrap every LINQ statement with a separate try/catch block. To me, the code starts to look a little messy with all of this, especially since I end up having to declare variables outside …

c# linq exception-handling .net-3.5

23
推荐指数
2
解决办法
7306
查看次数

MVVM + WPF + Popup =无能为力

我仍在努力将我现有的WPF应用程序修改为与MVVM方法"兼容".我已经非常接近,但我不确定如何解决剩下的几个障碍之一.

我有一个GUI元素(当前是一个按钮,虽然它可能是一个标签),当鼠标进入它时,它会触发MouseEnter事件,这会在代码隐藏中创建一个弹出窗口.弹出窗口由一个带有几个按钮的简单堆栈面板布局组成.每个按钮的Click事件当前都被分配给相同的事件处理程序,除了我更改Tag属性以执行简单(俗气)命令参数.我正在用MVVM中的"正确"方式进行摔跤,因为我现在这样做的方式非常难看.

为了解决这个问题,我认为这是我应该采取的方向,但我会感谢您提供给我的任何其他输入.:)

  1. 在XAML中创建弹出窗口.由于我的Popup内容是静态的,我应该能够完全在XAML中创建Popup.此外,每个按钮都将绑定到同一个ICommand派生类.例如

    <Popup x:Key="MyPopup" StaysOpen="False" Placement="Right">
        <Border Background="White" BorderBrush="Black" Padding="5" BorderThickness="2" CornerRadius="5">
            <StackPanel Orientation="Vertical">
                <Button Command="{Binding MyCommand}" CommandParameter="5">5</Button>
                <Button Command="{Binding MyCommand}" CommandParameter="10">10</Button>
                <Button Command="{Binding MyCommand}" CommandParameter="15">15</Button>
                <Button Command="{Binding MyCommand}" CommandParameter="20">20</Button>
            </StackPanel>
        </Border>
    </Popup>
    
    Run Code Online (Sandbox Code Playgroud)
  2. 通过触发器弹出弹出窗口,例如

                            <Button.Triggers>
                                <Trigger Property="Button.IsMouseOver" Value="True">
                                    <Setter TargetName="MyPopup" Property="IsOpen" Value="True" />
                                </Trigger>
                            </Button.Triggers>
    
    Run Code Online (Sandbox Code Playgroud)

认为#1还可以,但我正在努力#2.这是解决问题的正确方法吗?如果是这样,将Popup的IsOpen属性设置为True的正确XAML语法是什么?我找不到这方面的例子.

如果我的整个想法都有缺陷,我很乐意听到我的其他选择.谢谢!

wpf popup mvvm

21
推荐指数
1
解决办法
2万
查看次数

从命令行清除TortoiseSVN身份验证缓存

TortoiseSVN在大多数情况下都很不错,但是在团队开发情况下,不止一个人使用特定PC的一件事就是身份验证.当我正在处理东西时,我喜欢保存我的凭据,这样我就不需要继续输入它来进行日志记录,分支,提交等.

问题是,当我离开时,我总是忘记清除凭据,因为:

  1. 如果没有其他人使用电脑而故意忘记,我不想再重新输入它.
  2. 这是一个PITA,需要4次鼠标点击才能完成.

理想情况下,我只需要在SVN中使用几个不错的批处理文件来处理这类事情,包括重建图标缓存(我工作正常).我查看了命令行文档,但没有提到清除身份验证缓存.

有没有人想出怎么做?我认为这会鼓励我更频繁地清理我的证书.这不是世界末日,因为我们总是可以在提交后改变作者,但仍然......

svn authentication tortoisesvn caching

16
推荐指数
1
解决办法
3万
查看次数

使用lock语句在C#中进行递归/嵌套锁定

可能重复:
C#中的重入锁定

我在这里看过StackOverflow和MSDN,并且无法相信我在互联网上找不到这个问题.

假设我有一个私有成员的课程,我想在几个公共方法中访问.这些公共方法将由​​不同的线程调用,因此需要同步.

public class MyClass
{
    private Object SomeSharedData = new Object();

    public void MethodA()
    {
        lock( SomeSharedData) {
            // do something
            MethodB();
        }
    }

    public void MethodB()
    {
        lock( SomeSharedData) {
            // do something
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,MethodA和MethodB可以由此类的用户调用,但MethodA也调用MethodB,这会导致嵌套锁定条件.

这保证是安全的吗?换句话说,.NET是通过引用计数锁来处理这个,所以当我弹出这些方法时,锁会减少吗?或者.NET在幕后执行一些魔术,它只是忽略了源自同一线程的对象上的所有后续锁定?

.net c# synchronization locking

16
推荐指数
1
解决办法
7490
查看次数