小编Sch*_*999的帖子

LINQ:如何根据上下文修改AsParallel的返回类型?

LINQ的AsParallel回报ParallelQuery.我想知道是否有可能改变这种行为,以便我可以在没有实际更改代码的情况下比较运行和不运行并行的LINQ语句?此行为应类似于Debug.Assert- 如果DEBUG未设置预处理程序指令,则会对其进行优化.所以我希望能够AsParallel返回相同类型而不将其转换为ParallelQuery.

我想我可以声明我自己的扩展方法(因为我无法覆盖AsParallel)并在其中分析了预处理器指令:

    public static class MyExtensions
    {
#if TURN_OFF_LINQ_PARALLELISM
        public static IEnumerable<T> AsControllableParallel<T>(this IEnumerable<T> enumerable)
        {
            return enumerable;
        }
#else
        public static ParallelQuery<T> AsControllableParallel<T>(this IEnumerable<T> enumerable)
        {
            return enumerable.AsParallel();
        }
#endif
    }
Run Code Online (Sandbox Code Playgroud)

我想知道是否还有其他办法.我要求太多了吗?

.net c# linq plinq

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

WCF:IIS之外的服务托管使IIS萎缩

似乎MS正在支持自己的行程,允许在IIS之外托管WCF服务.从我的角度来看,IIS是相对简单但又冗余的服务层.WCF的引入极大地简化了服务托管,使IIS萎缩.所以你怎么看?我错过了什么?为什么我会将IIS用于WCF服务?因为我没有看到原因.

.net c# iis wcf web-services

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

Convert.ChangeType产生具体类型元素而不是对象的数组

遇到以下问题。我有一个属性,用于定义数据库表中键的名称。使用反射,我可以初始化属性或具有该属性的字段的值。在我将属性定义为数组之前,一切都很好:

[ConfigurationKey("TestArray")]
public int[] Array { get; set; }
Run Code Online (Sandbox Code Playgroud)

假设表中存储的值是逗号分隔的字符串,我将使用以下内容创建一个数组:

return valueString.Split(',').Select(s => Convert.ChangeType(s, memberType.GetElementType())).ToArray();
Run Code Online (Sandbox Code Playgroud)

这确实创建了一个元素数组,但仅创建了对象数组。结果,当我使用FieldInfo或PropertyInfo设置值时,会抛出异常“无法分配Object[]Int32[]”。

有任何想法吗?

.net c# linq type-conversion

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

.NET类型推断:无法推断"T GetValue <T>(T defaultValue = default(T))"的用法?

我有一个简单的方法:

public static T GetValue<T>(SqlDataReader reader, int columnIndex, T defaultValue = default(T))
{
    return reader.IsDBNull(columnIndex) ? defaultValue : (T)reader[columnIndex];
}       
Run Code Online (Sandbox Code Playgroud)

和它的用法:

string s = SqlUtils.GetValue<string>(reader, nameOrd);
Run Code Online (Sandbox Code Playgroud)

我问自己,为什么我必须指定<string>是否从使用中清楚地看到返回参数的类型是字符串?但显然我必须因为否则编译器抱怨The type arguments cannot be inferred from the usage....我的逻辑在哪里失败了?

.net c# generics

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

是否有 WCF 服务请求队列性能计数器?

有一个很好的 ASP.NET 性能计数器类别和一组计数器,可用于在性能测试运行期间跟踪请求队列。但是,我无法为通过 IIS 托管的 WCF 服务找到类似的设置。我们的 WCF 服务使用 net-tcp 协议作为 Windows 服务运行。我了解到有几个绑定参数可以控制排队(Binding.MaxConnectionsBinding.ListenBacklog)。这不是一个很容易的发现。所以我想知道,为什么要在 PerfMon 中跟踪这两个值?

.net c# wcf perfmon performancecounter

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

如何计算传递给Dictionary构造函数的capacity参数的最大值以避免OutOfMemoryException?

与此相关:

System.OutOfMemoryException因为大字典

OutOfMemoryException当我让.NET管理我的字典时,我得到了.调整大小方法抛出的异常.所以我试图通过提供大量的容量来避免调整大小.当然,我试图从int.MaxValue确保它将有助于解决问题开始.我计划尽可能多地下降.

然而OutOfMemoryException被扔了int.MaxValue.我决定进行一些二进制搜索,并将构造函数接受的容量的第一个值转换为int.MaxValue / 32.这不仅比我预期的要小,而且还令人困惑.

那么有谁有任何想法为什么?

哦,项目设置设置为使用x64架构.

.net c# dictionary out-of-memory

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

使用相同的整数值对C#枚举中的元素进行排序

我有一个简单的枚举:

enum E
{
    FullNameForA = 1,
    A = 1,
    FullNameForB = 2,
    B = 2
}
Run Code Online (Sandbox Code Playgroud)

目标是能够使用不同的字符串值对相同的积分值进行扭曲 - 必须使用FullNameFor*作为默认值.换句话说,用户可以提供EA作为输入,但代码应使用E.FullNameForA进行输出.

似乎默认情况下C#将使用具有相同积分值的元素的字母顺序,这使我的目标更难.是对的吗?任何想法如何克服这个?

.net c#

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

是否有可能使ReSharper仅在我的解决方案的所有测试项目中运行某些类别的测试?

有一种方法,但它很糟糕,我正在寻找更清洁的东西.

我可以去菜单选择Run All Test in Solution.这会将所有测试带到会话中.但并非所有测试都是可运行的 - 有一组测试专为调试和集成而设计.这些测试有不同的类别.

我的目标是仅运行具有特定类别的解决方案中的所有测试.为此,我希望让ReSharper扫描我的解决方案,应用过滤器,然后运行生成的集合.

那可能吗?

c# resharper unit-testing mstest

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

使用Ninject的C#,.NET和IoC:如何预热需要很长时间才能创建的类的实例?

我的应用程序中有来自Ninject的IOC.有几个类需要花费大量时间来初始化(从DB或文件中获取一些静态数据缓存).显然,他们需要在处理第一个用户请求之前创建它们.否则会有很高的超时风险.Ninject是否提供了一种方法来告诉内核通过绑定并创建一些?

.net c# dependency-injection ninject

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