我有一个像下面这样的方法:
public void ExecuteSomeCommand()
{
new MyCommand( someInt, SomeEnum.EnumValue ).Execute();
}
Run Code Online (Sandbox Code Playgroud)
我想测试传入我正在创建的ICommand对象的构造函数的枚举值是否正确.有什么方法可以用Rhino.Mocks做到这一点吗?
我正在尝试确定.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 3.5.
详细说明:我正在构建一个插件,它将在运行时加载到第三方应用程序中.主应用程序使用log4net作为其日志框架.但是,它不会公开根记录器,因此我们无法记录.(我已经向上游开发者提出了这个问题,他们将在未来的版本中修复它,所以在此期间我需要提出其他的东西)
该系统的另一个限制是,当它收到通知它应该加载本地系统上不存在的插件时,它将从连接的服务器(如果它存在于服务器上)下拉该插件,但是它只能拉下插件所在的组件.这意味着没有外部程序集,也不能使用插件部署.config或任何其他文件.
这让我只有内置的.NET程序集和插件程序集中的所有内容.但是,我不想通过建立自己的另一个记录框架来重新发明轮子,所以我想知道这个问题的最佳方法是什么.
我更喜欢登录到文件,并希望避免将内容转储到Windows事件日志中.
我在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) 我目前有一个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)
在哪里RootViewModels和Children类型ObservableCollection<SomeItemViewModel>
在同一个视图中,我有一个ComboBox,我希望其中的选定项目ComboBox作为筛选依据的条件TreeView.我有一个ViewModelRepository,它也是类型ObservableCollection<SomeItemViewModel>,由我的IoC容器提供.我用它来创建上面XAML中的其他ObservableCollections.
目前,我正在尝试Visibility在选择ComboBox中的项目时在我的ViewModelRepository中设置每个SomeItemViewModel.这似乎适用于树中前两个级别以下的任何内容,但不适用于第二级本身(第一级是始终可见的根).
但是,它不能始终如一地工作.当我应用"过滤器"时,正确的节点被设置为不可见,但如果我然后展开包含"已过滤"节点的节点,则任何后续"过滤器"都会失败.
我已经读过将ItemsControls绑定到CollectionViewSource以进行过滤,但我找不到它与TreeView一起使用的示例.有没有人对如何在这里使用它有任何指示?
.net ×2
c# ×2
mvvm ×2
dapper ×1
filter ×1
log4net ×1
logging ×1
powershell ×1
rhino-mocks ×1
treeview ×1
unit-testing ×1
windows ×1
windows-10 ×1
wpf ×1