我有一个LINQ查询,如下所示:
var p = option.GetType().GetProperties().Where(t => t.PropertyType == typeof(bool));
Run Code Online (Sandbox Code Playgroud)
获取未包含在此查询中的项目的最有效方法是什么,而不对列表执行第二次迭代.
我可以通过for循环轻松完成此操作,但我想知道是否有LINQ的简写.
我有以下课程
public class CalculatorManipulator<TCalculator>
where TCalculator : CachableCalculator
Run Code Online (Sandbox Code Playgroud)
它包含一个字典:
protected Dictionary<string, TCalculator> Calculators { get; set; }
Run Code Online (Sandbox Code Playgroud)
假设我尝试添加这样的项目
Calculators.Add(calc.CustomCaption, new CachableCalculator(calc, fg, cache));
Run Code Online (Sandbox Code Playgroud)
为什么会产生这个编译时错误:
Argument type CachableCalculator is not assignable to parameter type TCalculator.
Run Code Online (Sandbox Code Playgroud)
编译器知道那TCalculator是CachableCalculator.
我想知道为什么我必须在它自动执行时进行投射.
这可以通过将其转换为TCalculator来实现
Calculators.Add(calc.CustomCaption, (TCalculator)new CachableCalculator(calc, fg, cache));
Run Code Online (Sandbox Code Playgroud) 有没有办法将类导出为接口,然后在Angular 2中的另一个模块中导入该接口?我需要能够在一些组件的构造函数中注入类,例如应该注册为提供者.
考虑以下情况
private BlockingCollection<Consumer> consumers { get; set; }
ThreadPool.QueueUserWorkItem((x) => {
while (consumers.Count == 0)
Thread.Sleep(20);
Consumer consumer;
if (consumers.TryTake(out consumer)) {
var result = consumer.Read(data);
//do stuff with result
if (consumers.TryAdd(consumer)) {
//ok
}
}
});
Run Code Online (Sandbox Code Playgroud)
当没有可用于处理请求的消费者时,有没有办法避免此超时?