小编Tim*_*phy的帖子

如何将在本地PC上创建的Mercurial存储库移动到Web服务器?

我已创建并致力于在本地驱动器上创建的Mercurial存储库.我现在有一个远程Windows 2003 Web服务器设置来通过hgwebdir.cgi来提供存储库.

如何将本地创建的存储库移动到Web服务器?

它看起来像远程Web服务器的本地驱动器上的.hg文件夹的ftp​​.我是以正确的方式做到的.有更有效的方法吗?

mercurial

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

如何使用Mono.Cecil注入System.Object.Equals?

使用Mono.Cecil我想重写以下属性:

public string FirstName
{
    get { return _FirstName; }
    set
    {
        _FirstName = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

对此:

public string FirstName
{
    get { return _FirstName; }
    set
    {
        if (System.Object.Equals(_FirstName, value))
        {
            return;
        }
        _FirstName = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

这只是重写的内容,但它是我遇到问题的地方.

使用Reflector我可以看到以下代码根据需要重写属性,除了调用System.Object.Equals().如果期望IL代码是:

call bool [mscorlib]System.Object::Equals(object, object)
Run Code Online (Sandbox Code Playgroud)

但它被写成:

call instance void RewriteSharp.Person::.ctor()
Run Code Online (Sandbox Code Playgroud)

写入对System.Object.Equals的调用的代码是:

setMethodWriter.InsertBefore(
    firstExistingInstruction, 
    setMethodWriter.Create(OpCodes.Call, objectEqualsMethodReference));
Run Code Online (Sandbox Code Playgroud)

用于初始化objectEqualsMethodReference的方法是:

private static MethodReference GetSystemObjectEqualsMethodReference(
    AssemblyDefinition assembly
)
{

    var typeReference = assembly.MainModule.GetTypeReferences()
        .Single(t => t.FullName == "System.Object");

    var typeDefinition = typeReference.Resolve();

    var methodDefinition …
Run Code Online (Sandbox Code Playgroud)

c# mono.cecil

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

为什么不让OnXXX事件提升器方法返回一个值?

假设您有一个使用CancelEventArgs类引发事件的事件提升器方法(OnXXX),使OnXXX方法返回e.Cancel的值有什么问题吗?

例如:

Public Sub ProcessFiles(folder as DirectoryInfo)

    For each file in folder.GetFiles()
        If OnProcessingFile(New FileEventArgs(file)) Then
            .....ProcessFileCode
        Else
            Exit For
        End If
    Next

End Sub

Protected Function OnProcessingFile(ByVal e As FileEventArgs) As Boolean

    RaiseEvent ProcessingFile(Me, e)
    Return Not e.Cancel

End Function
Run Code Online (Sandbox Code Playgroud)

对我来说似乎是一个比这更清洁的解决方案:

Public Sub ProcessFiles(folder as DirectoryInfo)

    Dim e As FileEventArgs

    For each file in folder.GetFiles()

        e = New FileEventArgs(file)
        OnProcessingFile(e)

        If e.Cancel Then
            Exit For
        End If

        .....Process File Code

    Next

End Sub
Run Code Online (Sandbox Code Playgroud)

.net vb.net events

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

如何检测双击WebBrower控件?

在WinForms应用程序中,我需要检测何时双击System.Windows.Forms.WebBrowser的内容,然后打开自定义winform对话框.

我注意到WebBrowserBase禁用了Control.DoubleClick事件,但我还没有弄清楚如何覆盖此行为.

.net webbrowser-control winforms

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