小编ali*_*ada的帖子

单元测试用于创建新对象的void方法

我有一个像下面这样的方法:

public void ExecuteSomeCommand()
{
    new MyCommand( someInt, SomeEnum.EnumValue ).Execute();
}
Run Code Online (Sandbox Code Playgroud)

我想测试传入我正在创建的ICommand对象的构造函数的枚举值是否正确.有什么方法可以用Rhino.Mocks做到这一点吗?

c# unit-testing rhino-mocks mvvm

8
推荐指数
1
解决办法
2415
查看次数

.NET应用程序在Windows 10上将不同的操作系统版本返回到PowerShell

我正在尝试确定.NET应用程序中的操作系统版本,该应用程序已经使用System.Environment.OSVersion成功确定Windows 8.1之前的所有Windows版本的版本.

但是,System.Environment.OSVersion在Windows 10上调用.NET应用程序时,返回的版本是Microsoft Windows NT 6.2.9200.0(与Windows 8.1上的输出完全相同).但是,当[System.Environment]::OSVersion通过PowerShell 调用时,输出给了我Microsoft Windows NT 10.0.10240.0.

我的印象是PowerShell使用.NET并期望两个调用返回完全相同的输出.为什么输出中存在差异,更重要的是,如何检测我的应用程序是否在Windows 10上运行?

.net c# windows powershell windows-10

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

.NET中是否有内置的日志框架?

简单的问题:看标题.我正在使用.NET 3.5.

详细说明:我正在构建一个插件,它将在运行时加载到第三方应用程序中.主应用程序使用log4net作为其日志框架.但是,它不会公开根记录器,因此我们无法记录.(我已经向上游开发者提出了这个问题,他们将在未来的版本中修复它,所以在此期间我需要提出其他的东西)

该系统的另一个限制是,当它收到通知它应该加载本地系统上不存在的插件时,它将从连接的服务器(如果它存在于服务器上)下拉该插件,但是它只能拉下插件所在的组件.这意味着没有外部程序集,也不能使用插件部署.config或任何其他文件.

这让我只有内置的.NET程序集和插件程序集中的所有内容.但是,我不想通过建立自己的另一个记录框架来重新发明轮子,所以我想知道这个问题的最佳方法是什么.

我更喜欢登录到文件,并希望避免将内容转储到Windows事件日志中.

.net logging log4net

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

在添加到DynamicParameters后更改ParamInfo的值吗?

我在foreach循环中调用存储的proc,并且想在每次迭代中更改参数之一的值。目前,将参数添加到DynamicParameters中后似乎没有任何访问方法,尽管从阅读源代码中我可以看到DynamicParameters确实保留了一个内部Dictionary。为什么这不是公开的,或者是否有另一种途径获取ParamInfos来更改值的原因?

更新资料

我目前所拥有的:

foreach ( var fooID in fooIDs )
{
    var dynamicParameters = new DynamicParameters();
    dynamicParameters.Add( ParameterNames.BarID, barID );
    dynamicParameters.Add( ParameterNames.FooID, fooID);

    connection.Execute( ProcNames.MyProc, dynamicParameters, commandType:CommandType.StoredProcedure );
}
Run Code Online (Sandbox Code Playgroud)

dapper

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

使用MVVM过滤WPF TreeView

我目前有一个TreeView,它具有以下结构:

        <TreeView ItemsSource="{Binding RootViewModels}"
                  FontSize="12">
            <TreeView.ItemContainerStyle>
                <Style TargetType="{x:Type TreeViewItem}">
                    <Setter Property="local:TreeViewItemBehaviour.IsBroughtIntoViewWhenSelected"
                            Value="True" />
                    <Setter Property="IsExpanded"
                            Value="{Binding IsExpanded, Mode=TwoWay}" />
                    <Setter Property="IsSelected"
                            Value="{Binding IsSelected, Mode=TwoWay}" />
                    <Setter Property="Visibility"
                            Value="{Binding IsVisible, Mode=TwoWay, Converter={StaticResource boolVisibilityConverter}}" />
                </Style>
            </TreeView.ItemContainerStyle>
            <TreeView.ItemTemplate>
                <HierarchicalDataTemplate ItemsSource="{Binding Children}">
                    <TextBlock Text="{Binding SomeDisplayText}" />
                </HierarchicalDataTemplate>
            </TreeView.ItemTemplate>
        </TreeView>
Run Code Online (Sandbox Code Playgroud)

在哪里RootViewModelsChildren类型ObservableCollection<SomeItemViewModel>

在同一个视图中,我有一个ComboBox,我希望其中的选定项目ComboBox作为筛选依据的条件TreeView.我有一个ViewModelRepository,它也是类型ObservableCollection<SomeItemViewModel>,由我的IoC容器提供.我用它来创建上面XAML中的其他ObservableCollections.

目前,我正在尝试Visibility在选择ComboBox中的项目时在我的ViewModelRepository中设置每个SomeItemViewModel.这似乎适用于树中前两个级别以下的任何内容,但不适用于第二级本身(第一级是始终可见的根).

但是,它不能始终如一地工作.当我应用"过滤器"时,正确的节点被设置为不可见,但如果我然后展开包含"已过滤"节点的节点,则任何后续"过滤器"都会失败.

我已经读过将ItemsControls绑定到CollectionViewSource以进行过滤,但我找不到它与TreeView一起使用的示例.有没有人对如何在这里使用它有任何指示?

wpf treeview filter mvvm

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