小编Iva*_*lov的帖子

身份验证和授权之间有区别吗?

我看到这两个术语相当多(特别是在基于网络的场景中,但我认为它并不仅限于此),我想知道是否存在差异.

在我看来,他们都意味着你被允许做你正在做的事情.这只是一个命名法,还是意义上有一个基本的区别?

security

94
推荐指数
4
解决办法
5万
查看次数

为什么C#编译器生成单个类来捕获几个lambdas的变量?

假设我们有这样的代码:

public class Observer
{
    public event EventHandler X = delegate { };
}

public class Receiver
{
    public void Method(object o) {}
}

public class Program
{
    public static void DoSomething(object a, object b, Observer observer, Receiver r)
    {
        var rCopy = r;
        EventHandler action1 = (s, e) => rCopy.Method(a);
        EventHandler action2 = (s, e) => r.Method(b);
        observer.X += action1;
        observer.X += action2;
    }

    public static void Main(string[] args)
    {
        var observer = new Observer();
        var receiver = new …
Run Code Online (Sandbox Code Playgroud)

c#

40
推荐指数
2
解决办法
2827
查看次数

如何从UI自动化模式提供程序返回错误?

假设我在自定义控件中实现了一些UIA模式.说,TablePattern.如果出现任何问题,现有实现将返回null.但是调试起来不太方便.我可能在自动化同行中有更多的上下文.例如,因为GetItem(int row, int column)我可能会说提供的参数超出范围而不是仅返回null.

如果我从自动化对等端抛出异常 - 在UIA客户端,我TargetInvocationExceptionIUIAutomationPatternInstance对象获得没有任何细节(InnerException属性为null).

有没有办法让UIA通过UIA-服务器端到UIA-客户端的一些附加信息传递错误?


UPD:经过一些调查并与评论中提供的示例@SimonMourier进行比较,我发现这TargetInvocationException是我的错.在这里修复它.

现在我得到了正确的异常类型,但只有标准的异常消息.因为IndexOutBoundsException它是"索引超出了数组的范围." 不管我在UIA服务器端试图将其置于例外状态.

不同之处在于我试图不通过标准的托管UIAutomationClient调用UIA方法,而是使用我自己的代码一直到COM调用(标准托管库不支持我想使用的自定义UIA模式).标准库传递异常消息就好了.我试图追踪差异,发现以下内容:

  • 标准管理库使呼叫P /通过InternallCall调用这里通过定义方法private static extern int RawGridPattern_GetItem(SafePatternHandle hobj, int row, int column, out SafeNodeHandle pResult);.它返回HRESULT,由CheckError方法通过调用来处理Marshal.ThrowExceptionForHR(hr);.此时出现正确消息的异常,就像在UIA服务器端抛出一样.
  • 我使用的UIAComWrapper看似相同的COM调用定义c:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\UIAutomationClient.idlHRESULT GetItem ([in] int row, [in] int column, [out, retval] IUIAutomationElement ** element );.根据我对COM Interop的理解,重写返回值机制会自动检查HRESULT,必要时抛出异常,out result否则返回参数.除了异常消息由于某种原因没有被翻译之外,它确实存在.

要重现此问题,您可以尝试此项目.lib文件夹中的文件是从此存储库 …

.net c# wpf ui-automation

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

为什么ComboBox在设置DroppedDown时会隐藏光标?

让我们创建WinForms应用程序(我在Windows Vista上运行Visual Studio 2008,但似乎所描述的情况几乎发生在从Win98到Vista的所有地方,在本机或托管代码上).

写这样的代码:

using System;
using System.Drawing;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
    public class Form1 : Form
    {
        private readonly Button button1 = new Button();
        private readonly ComboBox comboBox1 = new ComboBox();
        private readonly TextBox textBox1 = new TextBox();

        public Form1() {
            SuspendLayout();
            textBox1.Location = new Point(21, 51);
            button1.Location = new Point(146, 49);
            button1.Text = "button1";
            button1.Click += button1_Click;
            comboBox1.Items.AddRange(new[] {"1", "2", "3", "4", "5", "6"});
            comboBox1.Location = new Point(21, 93);
            AcceptButton = button1;
            Controls.AddRange(new Control[] {textBox1, comboBox1, …
Run Code Online (Sandbox Code Playgroud)

c# combobox winforms

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

使用git-tfs桥的最佳实践和问题

好吧,我开始这个主题主要是为了分享我最近与社区一起使用git-tfs的经验.

如果有人还有别的东西可以分享 - 这对我也有帮助.

git tfs git-tfs

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

我可以在终结器方法中使用哪些对象?

我有一个类应该在处理或最终时删除一些文件.在终结器中我不能使用其他对象,因为它们可能已经被垃圾收集了.

我是否遗漏了关于终结器的一些观点并且可以使用弦乐?

UPD:类似的东西:

public class TempFileStream : FileStream
{
    private string _filename;

    public TempFileStream(string filename)
        :base(filename, FileMode.Open, FileAccess.Read, FileShare.Read)
    {
        _filename = filename;
    }

    protected override void Dispose(bool disposing)
    {
        base.Dispose(disposing);
        if (_filename == null) return;

        try
        {
            File.Delete(_filename); // <-- oops! _filename could be gc-ed already
            _filename = null;
        }
        catch (Exception e)
        {
            ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

.net c#

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

重命名目标文件的git cherry-pick

我有两个不同版本的分支 - 一个用于当前开发,另一个是长期支持几年.结果他们显着不同.我有一些文件存在于两个分支中,但在开发中重命名.其中一个修复最初是在开发分支中进行的,但后来发现在支持分支中也是必需的.但是,cherry-pick报告该文件在支持分支中不存在(因为它在开发中被重命名并且在支持中具有不同的名称).

这个特定文件的内容是类似的,所以看起来补丁应该应用得很好 - 如果我可以直接git它应该应用它的文件.有没有办法(最好在命令行中)手动指导git做我需要的东西?

git

10
推荐指数
2
解决办法
3725
查看次数

从C#项目制作DLL?

是否有可能从Visual Studio C#中的现有项目制作DLL文件?而不是给一个exe,我想为另一个人提供一个DLL文件,以便在他的代码中使用我的方法.我想把整个项目作为一个整体提供DLL.它已经是一个包含许多组件的大项目,但它的构建不正确,将这些代码转换为模块需要花费大量时间,因此我宁愿将整个项目作为dll.

谢谢你的帮助.

.net c# dll visual-studio

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

有没有办法压制VS尝试上线?

如果已将解决方案与TFS配置绑定,则在打开解决方案时VS会询问您:

---------------------------
Microsoft Visual Studio
---------------------------
Go Online

This solution is offline but its associated Team Foundation Server is available.

Would you like to go online with this solution after it has loaded?
---------------------------
Yes   No   Help   
---------------------------
Run Code Online (Sandbox Code Playgroud)

或者,如果TFS不可用,则建议选择暂时脱机工作或删除绑定.

有没有办法压制这些对话框?

给你一些背景信息.我们团队的一部分直接与TFS合作,其他部分正在通过git-tfs工作.使用git-tfs时 - 我根本不需要在线模式.因此,每次我在解决方案中打开解决方案或重新加载项目时 - 我都应该一遍又一遍地回答相同的问题.但我无法删除绑定,因为直接使用TFS的人将失去无缝连接到TFS的能力.

tfs visual-studio git-tfs

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

Haskell的类型推理奇怪

看看ghci的这个输出:

Prelude> :t Data.Map.lookup
Data.Map.lookup :: Ord k => k -> Data.Map.Map k a -> Maybe a
Prelude> :t flip Data.Map.lookup
flip Data.Map.lookup :: Ord a => Data.Map.Map a a1 -> a -> Maybe a1
Prelude> let look = flip Data.Map.lookup
Loading package array-0.3.0.2 ... linking ... done.
Loading package containers-0.4.0.0 ... linking ... done.
Prelude> :t look
look :: Data.Map.Map () a -> () -> Maybe a
Run Code Online (Sandbox Code Playgroud)

为什么look推断类型与类型不同flip Data.Map.lookup


给你一些背景信息.最初我有一个小程序,并试图找出它产生编译器错误的原因:

import qualified Data.Map as M …
Run Code Online (Sandbox Code Playgroud)

haskell type-inference ghc ghci monomorphism-restriction

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