小编m-y*_*m-y的帖子

Moq +单元测试 - System.Reflection.TargetParameterCountException:参数计数不匹配

我想使用带有多参数函数的lambda,但是当我尝试调用该行时,Moq会在运行时抛出此异常mock.Object.Convert(value, null, null, null);.

System.Reflection.TargetParameterCountException: Parameter count mismatch

代码是:

var mock = new Mock<IValueConverter>();

mock.Setup(conv => conv.Convert(It.IsAny<Object>(), It.IsAny<Type>(),
    It.IsAny<Object>(), It.IsAny<CultureInfo>())).Returns((Int32 num) => num + 5);

var value = 5;
var expected = 10;
var actual = mock.Object.Convert(value, null, null, null);
Run Code Online (Sandbox Code Playgroud)

实施它的正确方法是什么?

c# wpf unit-testing moq ivalueconverter

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

WPF DataBinding:Nullable Int仍然出现验证错误?

我通过代码将文本框数据绑定到可以为空的int.如果我从文本框中删除数据,它会给我一个验证错误(它周围的红色边框).

这是我的绑定代码:

ZipBinding = new Binding("Zip");
ZipBinding.Source = Address;
zipTextBox.SetBinding(TextBox.TextProperty, ZipBinding);

public Int32? Zip { get { ... } set { ... } }
Run Code Online (Sandbox Code Playgroud)

它清楚地标记为Nullable,那么为什么当我清除文本框时WPF想给我一个验证问题?

c# data-binding validation wpf

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

WPF DataGrid:CommandBinding为双击而不是使用事件

我知道如何在我的DataGrid中使用MouseDoubleClick事件来获取selectedvalue,但是如何使用命令绑定呢?这样我的ViewModel就可以处理逻辑.

到目前为止,我有以下内容:

<DataGrid Name="TestGrid" Grid.Row="2" Grid.ColumnSpan="2" AutoGenerateColumns="True" MouseDoubleClick="TestGrid_MouseDoubleClick"
          ItemsSource="{Binding Registrations}" SelectedValue="{Binding CurrentRegistration}" IsReadOnly="True" AlternationCount="2" GridLinesVisibility="None">
Run Code Online (Sandbox Code Playgroud)

我想摆脱MouseDoubleClick并适当地替换它.

wpf datagrid double-click commandbinding

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

Prism v4:Unity还是MEF?

我下载了Prism v4并运行了安装程序.我进入目录并运行以下两个批处理文件:

  • 仅限桌面 - 使用Mef QuickStart.bat打开模块化
  • 仅限桌面 - 使用Unity QuickStart.bat打开模块化

当我编译这些应用程序时,我没有看到任何真正的区别.我已经搜索了MEF vs Unity,我发现了一些优点/缺点,但没有任何具体说明是否一个人在Prism中使用"更好"(我知道这是主观的).我想也许如果我列出我的要求,有人可以指出我使用的正确技术(即使它不是Prism 4).

  • 该应用程序将使用WPF(不是 Silverlight)编写.
  • 主要应用将非常薄.
  • 主应用程序将使用Web服务来构建一个人可以访问的"apps/modules"菜单.
  • "apps/modules"将完全包含在其他托管库中.
  • 主应用程序通过反映到这些DLL中来获取视图和视图模型.
  • 主应用程序应将日志记录等服务提供给这些"应用程序/模块".

例如:

基本用户可能有以下选项:

  • ViewOnly地址记录

所有相关地址都在Address.dll内.

高级用户可能具有以下选项:

  • 新地址记录
  • 打开地址记录(更新/删除)
  • 管理用户

所有相关地址都在Address.dll内.
管理相关的所有项目都在Admin.dll中.

应用程序不应该实际引用这些DLL中的任何一个,我打算反映它们,以便如果有100个不同的模块,并且用户只能访问其中的2个,则只下载和使用其中的2个.有权访问其中10个的用户获得10个用户.

我已经通过WebService解决了下载DLL.:)

wpf mef unity-container mvvm prism-4

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

XML注释 - 应该看到引用完全合格吗?

基本上,何时真正需要(如果有的话)使用完全限定的xml参见参考:

<see cref="T:MyNamespace.Sub.MyType"/> //Option 1
<see cref="T:MyType"> //Option 2
Run Code Online (Sandbox Code Playgroud)

另外,引用.NET Framework对象怎么样?

<see cref="T:System.Collections.Generic.ICollection{T}"/> //Option 1
<see cref="T:ICollection{T}"/> //Option 2
Run Code Online (Sandbox Code Playgroud)

我知道完全符合条件的项目将始终允许Microsoft的Sandcastle正确地链接事物,但是一切都必须完全合格吗?


旁注:Microsoft Sandcastle是否能够链接到.NET Framework帮助文件,还是我通过引用浪费时间<see cref="T:System.Collections.Generic.ICollection{T}"/>

c# sandcastle xml-comments fully-qualified-naming

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

c #readonly对象

有没有办法返回对象的只读实例?

public class Person
{
    public String FirstName { get; set; }
    public String LastName { get; set; }
}

public class SomeClass
{
    public SomeClass(Person manager)
    {
        if (manager == null)
            throw new ArgumentNullException("manager");

        _manager = manager;
    }

    private readonly Person _manager;
    public Person Manager
    {
        get { return _manager; } //How do I make it readonly period!
    }
}
Run Code Online (Sandbox Code Playgroud)

唯一的方法是通过返回克隆()来执行此操作,以便对克隆而不是原始进行任何更改?我知道对于Arrays,有一个函数可以将Array作为只读方式返回.哦,我知道这是一个参考类型...我还想知道是否有一些隐藏的C#功能来锁定写入部分.

我试图想出一个Generic ReadOnly包装器类,但是如果没有做一些昂贵的反射等等,就无法弄清楚如何将属性作为readonly.

哦,我真的试图避免创建所有只读属性的类的第二个版本.那时,我不妨返回克隆.

c# object readonly reference-type

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

HttpRequestException - 这是客户端还是服务器问题?

前一段时间我使用HttpClient该类实现了一些使用REST Api的代码.

using (var client = new HttpClient() { BaseAddress = new Uri(@"https://thirdparty.com") })
{
    client.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(...);

    var uri = new Uri(@"rest/api/foo", UriKind.Relative);
    var content = new StringContent(json.ToString());

    using (var response = await client.PostAsync(uri, content))
    {
        // etc ...
    }
}
Run Code Online (Sandbox Code Playgroud)

对于测试和生产环境(每个环境都访问测试/生产环境),此代码似乎完全正常.最近,我们开始生产环境中获得HttpRequestException :System.Net.Http.HttpRequestException: Error while copying content to a stream.

这看起来有点奇怪,所以我使用Postman发送相同的消息,它工作得很好.我不确定为什么我们的代码失败了,Postman正在工作.我更改了json数据中的参数(状态从"NY"到"NV"),我们的.NET代码运行正常 - 当然我们不能只发送错误的json数据,所以这不是一个解决方案; 这更像是一个观察结果,完全相同的代码在不同内容下运行良好.


有趣的是,我们可以通过两个代码更改来解决这个问题.首先,Postman能够使用该RestSharp包生成有效的C#代码.或者,我从另一个指向使用HttpVersion 1.0的问题中找到答案:

using (var request = new HttpRequestMessage(HttpMethod.Post, uri))
{
    request.Version = HttpVersion.Version10; …
Run Code Online (Sandbox Code Playgroud)

c# rest json dotnet-httpclient postman

22
推荐指数
1
解决办法
2987
查看次数

如何基于"Configuration Manager"创建自己定义的常量?

当我选择"Debug"配置时,DEBUG常量处于活动状态.当我选择"Release"配置时,DEBUG常量处于非活动状态.

如何创建自己的配置,以便它们包含我自己定义的常量.基本上,我想要它,以便如果我选择配置"FOOBAR",有一个常量FOO并且BAR在我的项目中处于活动状态.

我基本上试图避免#define FOO在我的项目中放入一堆,然后在我需要/不需要它们时评论/取消注释.

configuration constants visual-studio c-preprocessor

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

XML评论部分类/方法

是否有一种标准方法,用于生成API文档的工具处理部分类的XML样式注释?基本上,应该如何评论部分类/方法,以便生成的帮助文档不被破坏?这个问题可能因使用的工具而异,在这种情况下,我想最重要的两个工具是:

  • Visual Studio的内置方法来创建XML文档
  • 微软的Sandcastle

我不希望我的XML文档出来时髦

/// <summary>Some Foo class</summary>
public partial class Foo { ... }

/// <summary>Some Foo class that implements some interface.</summary>
public partial class Foo : ISomeInterface { ... }
Run Code Online (Sandbox Code Playgroud)

c# sandcastle partial-classes xml-comments visual-studio

20
推荐指数
1
解决办法
2921
查看次数

C#为什么部分方法可以使用ref,但不能出来?

挺直的.MSDN声明您可以使用ref,但不能使用部分方法.我只是好奇为什么?我的理解是,当编译代码时,部分被合并,那么限制是什么呢?还有更多partial不仅仅是使代码文件更清洁和有组织(即eyecandy)?

参考:MSDN文章 - "部分方法可以有ref但不能输出参数."

c# partial-methods

19
推荐指数
2
解决办法
1297
查看次数