小编Mar*_*tus的帖子

写FizzBu​​zz

阅读编码恐怖,我刚刚遇到了FizzBu​​zz.

原帖是在这里:编码恐怖:为什么程序员不能..程序?

对于那些不知道的人:FizzBu​​zz是一款非常受欢迎的儿童游戏.从1到100计数,每次一个数字可以被3调用"Fizz"整除,每次一个数字可以被5调整为"Buzz",并且每次数字可以被3和5整除时,调用"FizzBu​​zz而不是数

但这一次,我刚刚开始编码.这是一分钟的工作,但有几件我不喜欢的事情.

这是我的代码

public void DoFizzBuzz()
{
    var combinations = new Tuple<int, string>[] 
    { 
        new Tuple<int, string> (3, "Fizz"), 
        new Tuple<int, string> (5, "Buzz"), 
    };

    for (int i = 1; i <= 100; ++i)
    {
        bool found = false;

        foreach (var comb in combinations)
        {
            if (i % comb.Item1 == 0)
            {
                found = true;
                Console.Write(comb.Item2);
            }
        }

        if (!found)
        {
            Console.Write(i);
        }

        Console.Write(Environment.NewLine);
    }
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

  1. 如何摆脱bool发现?
  2. 有没有比foreach更好的测试方法?

c# optimization fizzbuzz

22
推荐指数
10
解决办法
7万
查看次数

PasswordBox和MVVM

我们有以下场景:

  1. 用户可以放置密码的MVVM用户界面(实际上是a PasswordBox)
  2. 应该做一些工作的服务器
  3. 服务器连接到某些需要验证的数据库

我已经在MVVM中的PasswordBox上阅读了这个问题

但是如何做却没有答案!只是"永远不会那样".

传递密码的正确方法是什么?如何解决安全问题?

有没有适当的方式BindingPasswordBox和密码不得保存在某个地方,好不好.

那么,MVVM做这些事情的方式是什么?

即使模式被破坏,有没有一种很好的方法来实现这样的事情?

想到Func<string>要检索它,但没有绑定这会弄得一团糟......

更新 相同用于从(希望加密的)密码存储区初始化PasswordBox.这不是打破MVVM模式吗?用户不希望每次启动应用程序时输入密码,或者想要使用我相信的数据库.

c# security wpf mvvm passwordbox

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

IIS托管WCF服务:集成测试和代码覆盖

对于一个项目,我编写了一个wcf服务库.它可以在IIS和自托管服务中托管.

对于所有连接的外部系统,我提供了Mock实现,它们提供了一些通用数据,因此服务(库)保持运行和工作.它是一款经典的自动机/有限状态机.

引导时,所有数据源都连接在一起.在测试模式下,模拟实现是连接的.因此,当我运行测试时,服务库从自托管服务"启动",而不是IIS,状态机继续运行和处理数据包.

有没有办法从这样的运行中获得某种"测试覆盖率".

如果我可以告诉我从模拟对象提供的示例数据中遇到了哪些代码路径,我将非常感激.然后提供更多的testdata以获得更高的覆盖率.

如果我能做到这一点而不必提供"额外的"测试代码,那就太好了.我认为很多案例已经从模拟对象提供的数据中得到了解决.但是现在我没有起点.

以下是一些代码示例,可以更清楚地了解其含义.当然,代码被大大简化了.

在一个非常简单的控制台应用程序中启动服务(自托管版本)

static void Main(string[] args)
{
    using (var host = new ServiceHost(typeof(MyServiceLib.Service.MyServiceLib)))
    {
        host.Open();
        Console.ReadLine();
        host.Close();
    }
}
Run Code Online (Sandbox Code Playgroud)

在服务库中,从该代码调用构造函数

public MyServiceLib()
{
    Task.Factory.StartNew(this.Scaffold);
}
Run Code Online (Sandbox Code Playgroud)

这只不过是启动状态机

private void Scaffold()
{
    // lots of code deleted for simplicity reasons
    var dataSource = new MockDataSource();

    // inject the mocked datasource
    this.dataManager = new DataManager(dataSource);

    // this runs in its own thread. There are parts that are started on a timer event.
    this.dataManager.Start();
}

public class DataManager …
Run Code Online (Sandbox Code Playgroud)

c# wcf integration-testing unit-testing code-coverage

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

TreeView,HierarchicalDataTemplate和递归数据

对于我的treeview,我有两个不同的类提供ItemsSource.

public class TreeViewModel : ViewModelBase
{
    public ObservableCollection<NodeViewModel> Items { get; set; }
}

public class NodeViewModel : ViewModelBase
{
    public string Id { get; set; }
    public string Name { get; set; }
    public ObservableCollection<NodeViewModel> Children { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

现在我希望我的TreeView在TreeViewModel中显示Items并显示NodeViewModel提供的分层数据.

这是我的XAML

<Window x:Class="TreeViewMasterDetails.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:local="clr-namespace:TreeViewMasterDetails" 
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <TreeView Height="Auto" 
                  HorizontalAlignment="Stretch" 
                  Margin="10" 
                  VerticalAlignment="Stretch" 
                  Width="Auto">
            <TreeView.Resources>
                <HierarchicalDataTemplate DataType="x:Type local:TreeViewModel" ItemsSource="{Binding Items}">
                    <TextBlock Text="{Binding Path=Name}"></TextBlock>
                </HierarchicalDataTemplate>
                <HierarchicalDataTemplate DataType="x:Type local:NodeViewModel" ItemsSource="{Binding Children}">
                    <TextBlock Text="{Binding Name}"></TextBlock>
                </HierarchicalDataTemplate>
            </TreeView.Resources> …
Run Code Online (Sandbox Code Playgroud)

c# wpf treeview hierarchicaldatatemplate

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

在TextBlock中包装文本

有没有可能为Textblock提供wordwrap建议,就像你可以用HTML做的那样,<SHY> (soft hyphen)或者<WBR> (word break)更复杂,更难维护zero-width-space &#8203;

目前,Textblock在看到必要时会破坏单词,最后会出现像word一样的单词

Stackoverflo
w

我想要的是:

Stackover-
流程

或至少:

Stackover
流程

如果有建议的方法来实现所需,请告诉我.

c# wpf textblock

10
推荐指数
1
解决办法
2886
查看次数

MVVM中的ContextMenu

我想将contextmenu绑定到命令列表.

<Grid.ContextMenu>
    <ContextMenu ItemsSource="{Binding ItemContextCommands, Converter={StaticResource commandToStringConverter}}">
            <ContextMenu.ItemTemplate >
                    <DataTemplate DataType="MenuItem">
                            <MenuItem Command="{Binding}"></MenuItem>
                        </DataTemplate>
                </ContextMenu.ItemTemplate>
        </ContextMenu>
</Grid.ContextMenu>
Run Code Online (Sandbox Code Playgroud)

commandToStringConverter简单的命令列表转换为字符串调用列表ToString()列表中的每个命令.

我怎样才能实现Command每个MenuItem被称为?

c# wpf binding contextmenu mvvm

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

绑定到Model或ViewModel

我知道已经有关于该主题的问题,但其中的问题在某种程度上与其他问题有关,并没有提供确凿的答案.

特别是那里:问题1,问题2,当然还有问题3 所以请不要太快关闭这个问题.他们回答那里只是说"做这个,做那个"而不是为什么!

有些人否认需要a ViewModel并且说"标准"方式是直接绑定到模型.这是我否认并试图用技术论证来证明的.

从我在后台MVC,MVP,Presentation Model,它只是很自然地我使用ViewModel.也许我错过了一个重点?

所以对我来说,默认是绑定到a ViewModel,无论它Model是什么(无论它是否实现INotifyPropertyChanged).

我看到绑定到s的原因几个ViewModel,包括(如此处提到的CodeProject另一篇文章)

1.从视图中删除逻辑

  • 使逻辑单元可测试
  • 减少代码冗余(在需要时复制)

2.安全

  • 该模型包含用户不得更改的属性
  • 如果绑定到模型,则会发生自动但不需要的更新

3.松耦合

  • 如果直接绑定到模型,则较低层和View之间将存在耦合
  • 更改模型会导致所有视图中的更改
  • 视图不依赖于任何给定的模型
  • 可以使用EF,某些DSL,批处理文件等轻松生成模型

4.发展速度

  • 您可以从Prototype ViewModel层次结构开始并绑定到该层次结构
  • 如果模型仍在开发中,您可以从a开始 Prototype Model
  • Model并且ViewModel可以开发testdriven,无论View
  • View可完全由设计师,还是具有很强的设计背景开发商建

5.解决了"棘手的同步"问题

  • 对于任何给定的"棘手同步"问题,有很多解决方案,例如
  • AutoMapper
  • 来自模型的事件系统(模型触发事件,ViewModel订阅)

6.整个项目的结构相同

  • 有一些点需要ViewModel,比如SelectedItem
  • 将Binding与Model和ViewModel混合是错误的
  • 新鲜的开发人员很难弄清楚项目的结构
  • 稍后开始带ViewModel时,无法绕过它是凌乱的

7.可扩展性 …

c# wpf binding mvvm

8
推荐指数
2
解决办法
2645
查看次数

检查表是否包含重叠的时间跨度

我有两列数据表FromDateToDate,这是字符串格式.我想检查我的table.ie中是否有任何重复记录

From Date    To Date
----------------------      
9/01/2012    9/16/2012   
8/23/2012    8/24/2012   
8/25/2012    8/25/2012   
8/5/2012     8/6/2012    
8/26/2012    8/27/2012   
9/15/2012    9/23/2012
Run Code Online (Sandbox Code Playgroud)

该表包含其日期范围映射的重复记录

From Date       To Date      
----------------------      
9/01/2012    9/16/2012   
9/15/2012    9/23/2012
Run Code Online (Sandbox Code Playgroud)

它应该返回false.

.net c# sql linq datatable

7
推荐指数
1
解决办法
1994
查看次数

可视化二分图

有人可以推荐一个库或代码来可视化C#中的二分图吗?

图#似乎不直接支持这种图形(但有一些支持解开顶点).

我想创建一些像这个二分图的图形,节点中有一些文本.宽度和高度相同的节点将是理想的.

WPF控件是完美的,因为它存在于图#中.甚至可能存在XAML定义?作为一个替代方案:报告窗口也可以非常好.

可能在Graph#中有更多经验的人可以提供有关如何利用Graph#进行此操作的提示.

尝试使用NodeXL,但这似乎不是一个完美的解决方案,因为节点似乎没那么多可修改.也许有人可以提供更好的解决方案.玩过Soroush提供的NetworkView.目前,这最接近我想要的.

-update- 尝试了Soroush Falahati共享的NetworkView.这似乎是一个很好的基础,但在我需要的时候还不够灵活.我有些问题,相信没有可以开箱即用的库.(NetworkView具有很好的功能,可以在控件中设置连接/边缘,从而为NodeXL提供额外的提升).也许Graph#可以做得更多,但目前我只是试过这两个.

c# wpf visualization bipartite

7
推荐指数
1
解决办法
2665
查看次数

使用MVVM的TreeView BringIntoView

我希望用户能够在TreeView中搜索项目.输入searchtext后,TreeViewItem应滚动到视图中.

现在我正在使用TreeView的MVVM模式,TreeViewItems和MainView.

我需要做些什么才能使用MVVM获得BringIntoView的功能?我可以绑定一些属性吗?(在MFC中有类似FirstVisibileItem的东西)

看过一个有行为的"解决方案".真的有必要吗?

c# wpf treeview mvvm

7
推荐指数
2
解决办法
6607
查看次数