小编Jef*_*eff的帖子

Castle Windsor内部构造函数/类

我看了这个,它回答了我的一半问题:

Castle Windsor:使用内部构造函数注册类?

但是你可以使用Windsor来使用内部构造函数/类以及依赖注入吗?(所以构造函数参数也被注入)?我想保持类/构造函数内部允许最佳封装(这些类不应暴露给公众).

我需要这个来支持Silverlight,所以我不认为这是一个选项:

Castle Windsor:如何注册内部实施

谢谢.

.net dependency-injection castle-windsor inversion-of-control

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

具有多个线程的实体框架事务

我有一个运行多个线程的应用程序.线程不共享ObjectContext(每个线程都有自己的 - 我知道它们不是线程安全的).

但是,线程都在共享事务下运行.原始线程创建一个TransactionScope,它生成的每个线程使用主线程上的Transaction中的DependentTransaction创建一个TransactionScope.

当多个ObjectContext请求同时运行时,我有时(不一致)得到错误:

System.Data.EntityException occurred
  Message=An error occurred while closing the provider connection. See the inner exception for details.

  InnerException: System.Transactions.TransactionException
       Message=The operation is not valid for the state of the transaction.
       Source=System.Transactions
       StackTrace:
            at System.Transactions.TransactionStatePSPEOperation.get_Status(InternalTransaction tx)
            at System.Transactions.TransactionInformation.get_Status()
            at System.Data.ProviderBase.DbConnectionInternal.CloseConnection(DbConnection owningObject, DbConnectionFactory connectionFactory)
            at System.Data.SqlClient.SqlInternalConnection.CloseConnection(DbConnection owningObject, DbConnectionFactory connectionFactory)
            at System.Data.SqlClient.SqlConnection.Close()
            at System.Data.EntityClient.EntityConnection.StoreCloseHelper()
       InnerException: 
Run Code Online (Sandbox Code Playgroud)

我只知道它们同时运行,因为当我在调试模式下运行单元测试并弹出此异常时,如果我查看正在运行的不同线程,我总是看到在ObjectContext操作中至少有一个其他线程停止.

此外,在做了一些阅读后,我尝试添加multipleactiveresultsets=False到我的连接字符串,这没有任何区别.

这是实体框架中的错误吗?

c# multithreading entity-framework transactions transactionscope

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

Silverlight 4 DataTemplate DataType

Silverlight 4已经出局了,似乎我们再次错过了这个版本中的DataTemplate DataType功能,这对于MVVM支持IMHO来说是非常关键的.对于我的WPF应用程序,此时,我已经非常习惯将我的Views的DataTemplates全局添加到我的Application.Resources,其中DataTypes用于我的相应ViewModel:

即.

<DataTemplate DataType="{x:Type viewModels:myViewModel}">
<views:myView/>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

我喜欢这种方法,因为我所有绑定的ViewModel都会自动显示正确的内容...当我在视图中将某些ItemSource绑定到ViewModels集合时尤其有用...例如,这将自动确保每个选项卡中的每个选项卡TabControl绑定到a Collection<SomeViewModel>显示与之关联的视图SomeViewModel.

我为SL 3尝试过的一些事情包括:

  • 创建"DataTemplatePresenterContentControl",在控件加载时自动为内容应用DataTemplate

  • 使用TypeConverter,动态应用于控制负载,沿着可视树向下查找数据绑定对象

  • 使用动态应用于控件加载的样式,沿着可视树向下查找数据绑定对象

但是,这些方法都没有真正以可接受的方式解决我上面提到的情况,这非常关键.

因此,由于Silverlight 4中仍然无法开箱即用,我很高兴知道是否有人提出了一些合理的替代方案.

谢谢.

silverlight datatemplate mvvm silverlight-4.0

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

ExpressionVisitor.Visit <T>做什么?

在有人喊出答案之前,请先阅读问题.

.NET 4.0的ExpressionVisitor中该方法的目的是什么:

public static ReadOnlyCollection<T> Visit<T>(ReadOnlyCollection<T> nodes, Func<T, T> elementVisitor)
Run Code Online (Sandbox Code Playgroud)

我对该方法的目的的第一个猜测是,它将访问nodes参数指定的每个树中的每个节点,并使用elementVisitor函数的结果重写树.

情况似乎并非如此.实际上这种方法似乎比什么都没有,除非我在这里遗漏了一些东西,我强烈怀疑我是......

我尝试在我的代码中使用此方法,当事情没有按预期工作时,我反映了方法并发现:

public static ReadOnlyCollection<T> Visit<T>(ReadOnlyCollection<T> nodes, Func<T, T> elementVisitor)
{
    T[] list = null;
    int index = 0;
    int count = nodes.Count;
    while (index < count)
    {
        T objA = elementVisitor(nodes[index]);
        if (list != null)
        {
            list[index] = objA;
        }
        else if (!object.ReferenceEquals(objA, nodes[index]))
        {
            list = new T[count];
            for (int i = 0; i < index; i++)
            {
                list[i] = nodes[i];
            } …
Run Code Online (Sandbox Code Playgroud)

linq expression-trees expressionvisitor c#-4.0

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

表达式树依赖性分析器

我正在为交叉数据源IQueryProvider构建表达式树依赖性分析器.

也就是说,我有一个IQueryable,其中包含一些可以在内存中针对某个任意提供程序(比如Entity Framework)执行的元素.IQueryable中的一些其他元素违反了我需要进行远程WCF调用的实体.WCF操作采用序列化表达式树,对其进行反序列化,对自己的本地数据存储执行LINQ查询(也就是说实体框架),然后将结果发回给我(尽管这种机制可以很容易地成为WCF数据服务) DataServiceQuery ......但我没有使用它,因为它的功能支持水平是有限的...充其量).一旦我从WCF服务返回结果,我将针对本地执行的LINQ查询在内存中执行LINQ查询的结果.

那么,那有什么难的呢?好吧,我需要确定表达式树的依赖关系,以便我的本地底层查询提供程序不会爆炸尝试执行我的LINQ查询,该查询具有只能在远程WCF服务上执行的组件......反之亦然.

我们来看一个简单的场景:

  var result = 
   (from entityX in new Query<MyEntityX>()
   from entityY in new Query<MyEntityY>()
   where entityX.SomeProperty == "Hello" &&
   entityY.SomeOtherProperty == "Hello 2" && entityX.Id == entityY.XId).ToList();
Run Code Online (Sandbox Code Playgroud)

Query<T>是一个简单的可查询包装器,具有我自己的提供程序,它有机会解析树,找出在使用不同的查询提供程序交换根之前要做什么.因此,在上述情况下,我需要:

  1. 使用本地对象上下文对MyEntityA执行查询,并仅应用myEntityX.SomeProperty == "Hello"条件.也就是说,在本地运行以下命令:

    // assume the functionality for replacing new Query<MyEntityA> with new
    // ObjectContext<MyEntityA>() is already there...
    var resultX = (from entityX in new Query<MyEntityX>()
    where entityX.SomeProperty == "Hello").ToList().AsQueryable();

  2. 通过以下序列化发送并让它在我的远程WCF服务上执行,然后返回结果.

    // Send the preceeding expression over the over the wire
    // and …

c# linq lambda expression-trees

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

MSTest TestMethod依赖注入

我正在使用DI容器,我想用容器中解析的实例进行MSTest(VS 2010)单元测试.

我想将这些实例注入我的TestMethod或至少我的TestClass.这可能吗?

现在我的TestMethods直接调用container.Resolve<T>(xxx)我宁愿避免的,这样我的注射测试更加真实.

有人有这方面的经验吗?

提前致谢.

.net mstest dependency-injection visual-studio-2010

6
推荐指数
2
解决办法
2710
查看次数

Wix布尔属性值不起作用

我有以下财产:

<Property Id="UPDATEDB">1</Property>
Run Code Online (Sandbox Code Playgroud)

UI中的一个复选框绑定到该属性:

<Control Id="updateDatabase" Type="CheckBox" CheckBoxValue="1" Height="15" Width="95" X="20" Y="74" Text="Update Database" Property="UPDATEDB" />
Run Code Online (Sandbox Code Playgroud)

以及根据此属性的值执行某项操作的自定义操作

<CustomAction Id="RunDbMigration" Directory="INSTALLDIR" Return="check"
          ExeCommand='[DBMIGRATIONDIR]\DbMigration.exe' />

<InstallExecuteSequence>
  <Custom Action="RunDbMigration" After="InstallFinalize">UPDATEDB=1 AND NOT Installed</Custom>
</InstallExecuteSequence>
Run Code Online (Sandbox Code Playgroud)

如果我尝试从命令行为UPDATEDB传递值0:

msiexec /i "Setup.msi" /l* UPDATEDB=0
Run Code Online (Sandbox Code Playgroud)

要么

msiexec /i "Setup.msi" /l* UPDATEDB="0"
Run Code Online (Sandbox Code Playgroud)

无论如何都要检查复选框的值.也就是说,传入的0似乎得到了尊重,RunDbMigration动作没有运行......

这里发生了什么?为什么这样的火箭科学?

windows-installer wix wix3.5

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

Wix HeatFile任务锁定Dll

我在后期构建步骤中使用Wix HeatFile任务

<HeatFile OutputFile="Interop.dll.wxs" File="..\Interop\bin\x86\$(Configuration)\Interop.dll" DirectoryRefId="INSTALLDIR" ComponentGroupName="Interop_Dll" AutogenerateGuids="true" SuppressFragments="true" SuppressRootDirectory="true" ToolPath="$(WixToolPath)" PreprocessorVariable="var.InteropBinDir" />
Run Code Online (Sandbox Code Playgroud)

一旦我进行构建,它会锁定我的dll,后续构建失败:

Error   6   Unable to copy file "obj\x86\Debug\Interop.dll" to "bin\x86\Debug\dll". The process cannot access the file 'bin\x86\Debug\Interop.dll' because it is being used by another process. Interop
Run Code Online (Sandbox Code Playgroud)

直到我重新启动Visual Studio.

如何阻止Wix任务导致此问题?

wix visual-studio-2010 wix3.5

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

Visual Studio 2012是否支持XAML 2009?

我知道2010年没有,但2012年呢?

UserControls和Windows似乎仍然使用2006名称空间自动创建...

xaml visual-studio-2012

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

Visual Studio XML文件编辑器小写

我在Visual Studio中编辑cshtml(带有.cshtml文件扩展名).我自动格式化或粘贴一些xml(触发自动格式)和Visual Studio小写所有我的xml属性(所以theAttribute> theattribute).

这是错的.我该怎么办?我没有在工具>选项下看到相关选项.

xml visual-studio razor visual-studio-2013

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