小编sco*_*obi的帖子

在PowerShell中进行错误处理的正确方法是什么?

PowerShell是.bat和.NET的奇怪组合.在.bat中,您可以从命令中检查errorlevel和stderr输出.在.NET中,您可以捕获异常.

cmdlet如何返回错误?当他们失败或他们设置$时,他们会抛出异常吗?代替?这是可配置的吗?

我还假设我在PowerShell中调用的.NET函数将始终抛出异常而不会被shell自动捕获并转换为错误.那是对的吗?

也许我真正应该问的是:什么是一篇优秀的文章?好像很多像我这样有cmd's .bat和.NET经验的工程师都想知道我们应该如何在这个勇敢的新世界中做一些事情.

error-handling powershell exception

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

所有这些Reactive Observable扩展之间的实际区别是什么?

给定一个BehaviorSubject,调用所有这些不同函数之间的实际区别是什么?

  • 第一()
  • 持续()
  • LatestValue()
  • MostRecentValue()
  • NextValue()
  • 单()
  • 以(1)

假设我理解正确,他们应该做同样的事情,给定BehaviorSubject.

如果是这样,那么哪个电话是最合适的(我的意思是:哪个最符合我的意图)?也许是第一个还是一个

如果没有,那么实际的差异是什么?

.net system.reactive

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

可以在给定区域上使用InvalidateVisual()而不是整个WPF控件吗?

我有一个复杂的WPF控件,它在OnRender中绘制了很多原语(它有点像地图).当它的一小部分发生变化时,我只想为受影响的元素重新发出渲染命令,而不是运行整个OnRender.虽然我对OnRender函数在调整大小或其他方面的性能很好,但它对于基于鼠标悬停的基元突出显示来说还不够快.

目前我知道如何强制屏幕更新的唯一方法是调用InvalidateVisual().无法发送脏的rect区域以使其无效.

WPF屏幕组成的最低粒度是UI元素吗?我是否需要将原始渲染渲染到中间目标中,然后使用InvalidateVisual()更新到屏幕?

wpf user-interface rendering

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

在C#中使用弱引用的GC成本?

另一个问题中,斯蒂芬C说:

第二个问题是使用弱引用存在运行时开销.显而易见的成本是创建弱引用和调用get.不太明显的成本是每次GC运行时都需要进行大量的额外工作.

那么弱参考的GC的成本到底是多少?它需要做多少额外的工作,以及它有多大的交易?我可以做一些有根据的猜测,但我对实际的机制很感兴趣.

c# garbage-collection weak-references

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

如何从PowerShell调用C#类的索引器?

我无法弄清楚如何让Powershell在我的课堂上调用索引器.该类看起来像这样(大大简化):

public interface IIntCounters
{
    int this[string counterName] { get; set; }
}

public class MyClass : IIntCounters
{
    public IIntCounters Counters { get { return this; } }

    int IIntCounters.this[string counterName]
        { get { ...return something... } }
}
Run Code Online (Sandbox Code Playgroud)

如果我新上了这个类,我不能只使用它上面的括号运算符 - 我得到一个"无法索引"的错误.我也尝试使用get_item(),这是Reflector向我展示的索引器最终变成了程序集,但这让我得到了"不包含名为get_item的方法"错误.

更新:这似乎特定于我使用显式接口.所以我的新问题是:有没有办法让Powershell在不切换显式接口的情况下看到索引器?(如果可能,我真的不想修改这个程序集.)

c# powershell

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

如何仅在非交互式运行时从Powershell脚本返回退出代码

我有很多脚本按计划任务运行.因此,他们$host.setshouldexit(1)对任何失败都做了一次失败,它在任务调度程序中显示为返回码.

我还希望能够在调试和测试时以交互方式运行这些脚本.所以$host.setshouldexit()杀死我的powershell或ISE会话.

我的问题是:如何检测脚本是否以非交互方式运行?如果是,那么我将使用setshouldexit,否则它将打印错误代码或非破坏性的东西.(请注意,我不想使用,[environment]::userinteractive因为这些脚本并不总是在操作系统认为是非交互式会话中运行.)

我正在使用一个非交互式开关来执行计划任务.有什么方法可以从powershell查询吗?

powershell

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

不可变ID属性如何影响.NET相等?

(对于长时间的设置道歉.我保证在这里有一个问题.)

考虑一个Node具有在构造时分配的不可变唯一ID 的类.除了其他方面,此ID在持久化对象图时用于序列化.例如,当一个对象被反序列化时,它会通过ID对主对象图进行测试,以查找冲突并拒绝它.

此外,a Node仅由私有系统实例化,并且所有对它们的公共访问都是通过INode接口完成的.

所以我们有类似这样的常见模式:

interface INode
{
    NodeID ID { get; }

    // ... other awesome stuff
}

class Node : INode
{
    readonly NodeID _id = NodeID.CreateNew();

    NodeID INode.ID { get { return _id; } }

    // ... implement other awesome stuff

    public override bool Equals(object obj)
    {
        var node = obj as INode;
        return ReferenceEquals(node, null) ? false : _id.Equals(node.ID);
    }

    public override int GetHashCode()
    {
        return _id.GetHashCode();
    } …
Run Code Online (Sandbox Code Playgroud)

c# equality

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

有填充的十六进制"名称"生成器?

前几天我正在进行调试,并且在我使用的某些嵌入式硬件上遇到了一些我以前从未见过的内存和注册填充.所以我开始了心理目录.例如:

DEADBEEF, BAADF00D, D15EA5ED, DECEA5ED, BAA5H33P...
Run Code Online (Sandbox Code Playgroud)

当你看内存查看器并且模糊地与它的内容(删除的记忆,无人的土地,外衣......)相关时,它会突出.

它让我思考 - 这些是否有发电机?像l33t名称生成器之类的东西,除了限制为十六进制数字(hexits?).

memory hex

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

代码契约:如何处理继承的接口?

我正在使用MS Code Contracts,并且使用接口继承和ContractClassFor属性遇到了麻烦.

给定这些接口和合同类:

[ContractClass(typeof(IOneContract))]
interface IOne { }
[ContractClass(typeof(ITwoContract))]
interface ITwo : IOne { }

[ContractClassFor(typeof(IOne))]
abstract class IOneContract : IOne { }
[ContractClassFor(typeof(ITwo))]
abstract class ITwoContract : IOneContract, ITwo { }
Run Code Online (Sandbox Code Playgroud)

让我们说IOne和ITwo是实质性的接口.所以IOneContract会有大量的代码用于必要的检查.

我不想在ITwoContract中为IOne接口复制所有这些内容.我只想为ITwo接口添加新合同.从另一个合同类继承似乎是重用该代码的可能方式.但是我收到以下错误:

EXEC : warning CC1066: Class 'ITwoContract' is annotated as being the contract for the interface 'ITwo' and cannot have an explicit base class other than System.Object.
Run Code Online (Sandbox Code Playgroud)

这是代码合同中的限制还是我做错了?我们的项目中有很多接口继承,如果我无法弄清楚如何解决这个问题,这就像是Code Contracts的交易破坏者.

code-contracts

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

如何制作WPF TextBox传递ApplicationCommands?

WPF TextBox捕获Ctrl-Z和Ctrl-Y以进行自己的撤消/重做.通常很棒,但在我们的应用程序中,我们有一些文本框,我不希望有这种行为,而是转而通过整个应用程序来处理全局撤消.

我想通过为ApplicationCommands.Undo/Redo添加CommandBindings,我可以覆盖文本框对这些文件的处理.

我的问题:如何将这些绑定"转发"到父框架元素,以便它最终路由到我在主窗口上安装的应用程序处理程序?

更新:感谢AndrewS,事实证明我需要的是将IsUndoEnabled设置为false.然后app命令被忽略,顶级窗口可以处理它们.好极了!

wpf

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