我已创建并致力于在本地驱动器上创建的Mercurial存储库.我现在有一个远程Windows 2003 Web服务器设置来通过hgwebdir.cgi来提供存储库.
如何将本地创建的存储库移动到Web服务器?
它看起来像远程Web服务器的本地驱动器上的.hg文件夹的ftp.我是以正确的方式做到的.有更有效的方法吗?
使用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) 假设您有一个使用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) 在WinForms应用程序中,我需要检测何时双击System.Windows.Forms.WebBrowser的内容,然后打开自定义winform对话框.
我注意到WebBrowserBase禁用了Control.DoubleClick事件,但我还没有弄清楚如何覆盖此行为.