小编akj*_*shi的帖子

在TFS中使用Tortoise SVN diff

我想在TFS中使用Tortoise SVN diff实用程序.我知道如何在TFS中配置用户工具.我需要的是Tortoise SVN diff实用程序的安装程序.我想我需要安装完整的Tortoise SVN才能获得SVN diff工具,是否可以下载这个工具的独立版本?

我知道其他各种差异工具都可以使用,比如winMerge等,但我对龟龟svn diff非常熟悉.

diff tortoisesvn tfs visual-studio-2008 visual-studio

18
推荐指数
2
解决办法
6461
查看次数

C#工厂 - 是必须的?

C#工厂模式是否需要向上转换?

我希望上课在图书馆G中在班级图书馆A中创造一个亚当,而不使G依赖于A.上帝在班级图书馆E中为夏娃制作亚当斯,夏娃可以知道并依赖亚当.(编辑 - 这个样本越来越好:)

我能想到的解决方案是在A中有一个AdamFactory.这样AdamFactory知道Adam并且可以很容易地创建它(可能只是调用Adam的构造函数).上帝收到一个AdamFactory,可以命令CreateAdam.

现在,因为上帝不被允许认识亚当,AdamFacotry的CreateAdam必须返回一个物体,这需要Eve将AdamFactory返回的物体向上投射到亚当身上.

我认为这会奏效.然而,我对上传感到不安,因为这是禁忌.这真的是必须的吗?

PS - 没有Blasphemy的意图,如果某人的感受受到伤害我会道歉.使用上帝和亚当而不是创造者和创造似乎更好,因为后两个词彼此太相似了.

编辑:重新接口建议.让我们假设Adam有两种方法:ProvideLove,ProvideFood和ProvideProtection(我们保持这个样本是kis-safe :).夏娃将亚当用于这两个目的,但当然上帝没有.那么为什么要向上帝提供AdamFactor返回实现IAdam而不仅仅是对象的东西的知识呢?我不明白!

编辑:工作代码(同一个库中的每个人,我的目标是分离到不同的库)看起来像这样:

Adam God.LoadAdam(AdamID theAdamID)
       var adam = new Adam(theAdamId, this)

Adam.Adam(AdamID theAdamID, God theGod)
      _god = theGod
      _mind  = theGod.LoadMind(theAdamId, this)

Mind God.LoadMind (AdamID theAdamID, Adam theAdam)
      var mind  = new Mind (theAdam)
      var mindId = new minId(theAdamId)
      mind.DeserializeFromFile(minId)

Mind.Mind (Adam theAdam)
      _adam = theAdam
Run Code Online (Sandbox Code Playgroud)

c# factory casting factory-pattern

18
推荐指数
1
解决办法
932
查看次数

处理Oauth 2.0-facebook gem error 100:此授权码已被使用

我一直在为我的rails应用程序设置facebook身份验证,在测试时,在使用我的facebook帐户登录后,我不断收到此错误:

OAuth2::Error:
{"error":{"message":"This authorization code has been used.","type":"OAuthException","code":100}}
Run Code Online (Sandbox Code Playgroud)

我不确定从哪里开始,但似乎无法在网上找到任何其他内容.任何指导将不胜感激,很高兴提供更多信息,如果它有用.

facebook ruby-on-rails oauth-2.0

18
推荐指数
3
解决办法
8213
查看次数

在wpf中禁止/阻止选择禁用的组合框项目

我正在编写一个应用程序,其中我想禁用其中的几个项目,ComboBox并且还想禁止/阻止选择禁用的项目.请注意,主窗口中的ComboBox有另一个ComboBox作为ComboBox项目初始化(由运行时由数据模板选择器决定).

使用下面的代码我可以在ComboBox中禁用ComboBox,但它不会阻止用户选择禁用的ComboBox项.禁止/阻止选择禁用物品的任何帮助都会有所帮助.

以下是代码段

主窗口中的ComboBox:

<Grid>
    <ComboBox HorizontalAlignment="Left" VerticalAlignment="Top" 
              Width="120" Margin="87.2,44.8,0,0" 
              ItemsSource="{Binding Cars}" 
              ItemsPanel="{DynamicResource ItemsPanelTemplateHorizontal}"
              ItemTemplateSelector="{StaticResource QualityComboBoxTemplateSelector}"
              SelectedItem="{Binding SelectedItm}"/>
</Grid>
Run Code Online (Sandbox Code Playgroud)

数据模板选择器:

public class QualityComboBoxTemplateSelector : DataTemplateSelector
{
    public override DataTemplate SelectTemplate(object item, DependencyObject container)
    {
        var element = container as FrameworkElement;

        var dataTemplate = element.FindResource(((item is string) && item.Equals("Ferrari")) ?
                                                       "DataTemplateTopLevelCombobox2" : "DataTemplateTopLevelCombobox1") as DataTemplate;

        return dataTemplate;
    }
}
Run Code Online (Sandbox Code Playgroud)

以上ComboBox的数据模板:

<DataTemplate x:Key="DataTemplateTopLevelCombobox1">
    <Border BorderBrush="Black" BorderThickness="1" >
        <TextBlock HorizontalAlignment="Left" 
                   TextWrapping="Wrap" Text="{Binding}"     
                   VerticalAlignment="Top"/>
    </Border>
</DataTemplate>

<DataTemplate x:Key="DataTemplateTopLevelCombobox2">
    <Border Width="100">
        <ComboBox Text="Custom" …
Run Code Online (Sandbox Code Playgroud)

.net c# wpf combobox mvvm

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

如何使用javascript从iframe中选择文本?

<html>
 <body>
  <script type="text/javascript">

   function smth() {

    if (document.getSelection) {
    var str = document.getSelection();
    if (window.RegExp) {
      var regstr = unescape("%20%20%20%20%20");
      var regexp = new RegExp(regstr, "g");
      str = str.replace(regexp, "");
    }
    } else if (document.selection && document.selection.createRange) {
     var range = document.selection.createRange();
     var str = range.text;
    }   

    alert(str);
   }
  </script>   

    <iframe id="my"  width="300" height="225">
   .....some html ....
    </iframe>      

    <a href="#" onclick="smth();">AA</a>
 </body>    
</html>
Run Code Online (Sandbox Code Playgroud)

smth功能我可以从一些div中获取所选文本,但它不适用于iframe.任何想法如何从iframe中获取所选文本?

javascript iframe selected

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

WPF窗口 - 仅允许水平调整大小

我想只允许我的WPF窗口水平调整大小.我怎样才能做到最好?

wpf resize window

17
推荐指数
2
解决办法
9968
查看次数

WPF中的TabIndex与KeyboardNavigation.TabIndex

TabIndexKeyboardNavigation.TabIndexWPF有什么区别?什么时候使用?

.net wpf focus keyboard-navigation tabindex

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

WPF - MVVM - ComboBox SelectedItem

我已经ViewModel(实现INotifyPropertyChanged)在后台和类Category中只有一个属性类型string.我的ComboBox SelectedItem绑定到Category的实例.当我更改实例的值时,SelectedItem没有被更新,并且Combobox没有被更改.

编辑:代码

组合框:

<ComboBox x:Name="categoryComboBox" Grid.Column="1"  Grid.Row="3" Grid.ColumnSpan="2" 
          Margin="10" ItemsSource="{Binding Categories}"
          DisplayMemberPath="Name" SelectedValue="{Binding NodeCategory, Mode=TwoWay}"/>
Run Code Online (Sandbox Code Playgroud)

属性:

private Category _NodeCategory;
public Category NodeCategory
{
    get
    {
        return _NodeCategory;
    }
    set
    {
        _NodeCategory = value;
        OnPropertyChanged("NodeCategory");
    }
}

[Serializable]
public class Category : INotifyPropertyChanged
{
    private string _Name;
    [XmlAttribute("Name")]
    public string Name
    {
        get
        {
            return _Name;
        }
        set
        {
            _Name = value;
            OnPropertyChanged("Name");
        }
    }

    public void OnPropertyChanged(string propertyName)
    {
        if (PropertyChanged …
Run Code Online (Sandbox Code Playgroud)

.net c# data-binding wpf mvvm

17
推荐指数
2
解决办法
5万
查看次数

C#没有捕获来自非托管C++ DLL的未处理异常

我有一个从C#应用程序调用的非托管C++ DLL,我试图让C#应用程序捕获所有异常,以便在由于非托管异常导致dll失败的情况下,用户将得到一个半合适的错误消息(C#app是一个实现它自己的http处理程序的Web服务).

我遇到的问题是并非所有类型都被捕获.因此,如果我创建以下内容并执行C#应用程序,则dll会抛出错误并终止整个应用程序.有任何想法吗?

这是在VS2005中使用.Net framework v2创建的

C++ - Test.h

#ifndef INC_TEST_H
#define INC_TEST_H

extern "C" __declspec(dllexport) void ProcessBadCall();

#endif
Run Code Online (Sandbox Code Playgroud)

C++ - Test.cpp

#include <iostream>
#include <vector>

using namespace std;

void ProcessBadCall()
{
  vector<int> myValues;
  int a = myValues[1];
  cout << a << endl;
}
Run Code Online (Sandbox Code Playgroud)

C# - Program.cs

class Program
{
  [DllImport("Test.dll", EntryPoint="ProcessBadCall")]
  static extern void ProcessBadCall();

  static void Main(string[] args)
  {
    try
    {
      ProcessBadCall();
    }
    catch (SEHException ex)
    {
      Console.WriteLine("SEH Exception: {0}", ex.Message);
    }
    catch (Exception ex)
    {
      Console.WriteLine("Exception: {0}", …
Run Code Online (Sandbox Code Playgroud)

c# c++ dll pinvoke exception-handling

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

在CollectionChanged事件期间无法更改ObservableCollection

我有一个CollectionChanged与之相关的事件ObservableCollection.CollectionChanged然后,此事件调用另一个函数,该函数旨在使用原始集合中的项更新另一个集合(相同类型).我已经阅读了" 在CollectionChanged事件期间无法更改ObservableCollection "的其他帖子,我完全理解为什么修改CollectionChanged事件内部的集合以及为什么这会导致循环引用...但在这种特殊情况下我没有修改原始集合,我只是将一个项目添加到一个不相关的集合中.

所以对我的问题......我在做什么有什么不对吗?我没有看到如何将集合中的项目与绑定到另一个集合的事件相关联,然后再次触发事件并创建循环引用(尽管请告诉我,如果我错了).

还有...周围有什么办法吗?我读了几篇帖子,建议在一个单独的线程上运行它,但是当我尝试时,我得到了以下错误.

This type of CollectionView does not support changes to its SourceCollection
from a thread different from the Dispatcher thread.
Run Code Online (Sandbox Code Playgroud)

我真的只是在更好地了解这里发生的事情之后.任何建议将不胜感激.

编辑

请求的简化示例

void originalCollection_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
{
    update(originalCollection);
}

private void update(object parameter)
{
    foreach (var originalCollectionItem in parameter)
        newCollection.Add(originalCollectionItem);
}
Run Code Online (Sandbox Code Playgroud)

.net c# observablecollection

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