小编kiw*_*pom的帖子

无法解析Unity容器中的Dictionary

我偶然发现了这个:

在Unity容器中,我想注册IDictionary<TK, TV>; 假设它是IDictionary<string, int>

_unityContainer = new UnityContainer()
    .RegisterType<IDictionary<string, int>, Dictionary<string, int>>();
Run Code Online (Sandbox Code Playgroud)

但如果我试试

var d = _unityContainer.Resolve<IDictionary<string, int>>();
Run Code Online (Sandbox Code Playgroud)

它无法解决......

我明白了......

Microsoft.Practices.Unity.ResolutionFailedException:Microsoft.Practices.Unity.ResolutionFailedException:依赖项的解析失败,type ="System.Collections.Generic.IDictionary`2 [System.String,System.Int32]",name ="(none )".在解决时发生异常:

异常是:InvalidOperationException - 类型Dictionary`2有多个长度为2的构造函数.无法消除歧义.


在例外时,容器是:

解析System.Collections.Generic.Dictionary 2[System.String,System.Int32],(none) (mapped from System.Collections.Generic.IDictionary2 [System.String,System.Int32],(无))---> System.InvalidOperationException:类型Dictionary`2有多个长度为2的构造函数.无法消除歧义..

所以看起来它已经找到要解决的类型(正在Dictionary<string, int>)但未能将它新起来......

怎么团结不能解决这种类型?如果我输入

IDictionary<string, int> d = new Dictionary<string, int>()
Run Code Online (Sandbox Code Playgroud)

这样可行...

有任何想法吗?

谢谢!

c# ioc-container unity-container

11
推荐指数
1
解决办法
5912
查看次数

LINQ可空类型的聚合行为

有人能解释一下这里发生了什么吗?Howcome 两种这些东西是真的吗?

[TestMethod]
public void WhatIsGoingOnHere()
{
    List<int?> list = new List<int?> { 1, 2, 3, null, 5, 6 };
    Assert.AreEqual(17, list.Sum());

    int? singleSum = 1 + 2 + 3 + null + 5 + 6;

    Assert.IsNull(singleSum);
}
Run Code Online (Sandbox Code Playgroud)

具体来说,为什么Sum()方法不返回'null'?或者单身不等于17?

.net linq nullable

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

如何将ValueConverter应用于基于约定的Caliburn.Micro绑定?

如何将ValueConverter应用于基于约定的Caliburn.Micro绑定?或者你需要使用{Binding}语法吗?

我知道我能做到这一点

<TextBlock
    Text="{Binding Foo, Converter=fooToBarConverter}" />
Run Code Online (Sandbox Code Playgroud)

但如果我使用Caliburn.Micro的约定优于配置,如何应用该自定义转换器

<TextBlock
    x:Name="Foo" />
Run Code Online (Sandbox Code Playgroud)

谢谢,

silverlight xaml binding valueconverter caliburn.micro

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

抛出XamlParseException调用XamlReader.Load

我正在玩.net 4 System.Windows.Markup.XamlReader- 就像教育练习一样 - 我一直在遇到同样的问题:如果根对象定义了一个,那么加载xaml XamlReader.Load会抛出a ,但如果没有,则成功解析并加载节点.XamlParseExceptionx:Class

这是我正在尝试的代码:

using System.Windows;
using System.Xaml;
using XamlReader = System.Windows.Markup.XamlReader;

namespace WpfApplication2
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();

            // Load up UserControl1.xaml from the solution
            var reader = new XamlXmlReader(@"../../UserControl1.xaml", XamlReader.GetWpfSchemaContext());
            var userControl = XamlReader.Load(reader) as UserControl1;

            //  Do something with userControl...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试XamlReader.Parse直接从持有xaml的字符串中得到相同的结果:只有在没有定义x:Class声明的情况下才有效.

删除x:Class声明似乎不是一个好的选择,因为然后我失去了代码隐藏,特别是调用InitalizeComponent()

例外细节:

'Specified …

wpf xaml .net-4.0

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

为什么Moq看不到在.Select方法中调用此方法?

我创建了这个要点来描述正在发生的事情:

https://gist.github.com/IanRandall/5417410

简要说明:.Verify断言在存储库的第一个.Get()方法实现中失败,因为Moq没有注意到正在调用映射器.

有人见过这个吗?我错过了什么吗?

干杯:)

c# moq

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