Tag: vb.net

.NET事件特殊方法(添加/删除/提升/其他)

我想知道EventInfo.GetRaiseMethod和EventInfo.GetOtherMethods方法。 显然,CLR支持4种与事件相关的方法:添加,删除,提升和“其他”。 但是在C#中创建的事件只有添加和删除 …我假设在VB中使用了raise ,因为你必须在声明自定义事件时指定一个RaiseEvent方法,但显然情况并非如此: GetRaiseMethod总是返回null。 那么,有谁知道: 如果一个事件从未被使用过,那么有一个与事件相关联的加法方法有什么意义呢? 是否有使用此方法引发事件的特定MSIL指令? (我在操作码中找不到类似的东西) GetOtherMethods返回的“其他”方法是什么(好吧,实际上没有返回)? 他们应该做什么? BCL中有哪些类型可以实现这些特殊方法?

输入值列表将导致“检测到潜在危险的Request.Form值…”错误

我知道<和>字符会导致此错误, 但其他字符/输入会导致此错误? 我正在测试Global.asax中的这个错误,并重新检测到一个错误页面,我想列出导致此错误的所有可能值,因此用户可以返回到他们的页面并删除它们。 我做了一些谷歌搜索,但到目前为止我所看到的只有<和>字符……当然还有更多。

在没有代码签名的情况下从文件共享运行.NET应用程序

每当从文件共享运行.NET exe时,.NET安全模型都会抛出安全性错误。 从本地驱动器运行时不会出现该错误。 有没有人知道解决这个问题的方法,而不需要签署代码?

.net应用程序是否有通配符扩展选项?

我过去使用setargv.obj链接扩展通配符参数用于许多C和C ++应用程序,但我找不到.net应用程序的任何类似提及。 有没有一种标准方法可以让您的应用程序的命令行参数自动扩展通配符? (即将* .doc从args参数中的一个条目展开到与该通配符匹配的所有条目)。 PS我已经使用Directory.GetFiles()为我当前的小项目攻击了一些东西,但是它没有覆盖带路径的通配符(还有),如果没有自定义代码就可以做到这一点。 更新:这是我粗略的黑客,为了说明。 它需要拆分GetFiles的路径和名称参数,但这是一般的想法。 将setargv.obj链接到C或C ++应用程序基本上会进行所有通配符扩展,使用户只能遍历argv数组。 static void Main(string[] args) { foreach (String argString in args) { // Split into path and wildcard int lastBackslashPos = argString.LastIndexOf(‘\\’) + 1; path = argString.Substring(0, lastBackslashPos); filenameOnly = argString.Substring(lastBackslashPos, argString.Length – lastBackslashPos); String[] fileList = System.IO.Directory.GetFiles(path, filenameOnly); foreach (String fileName in fileList) { //do […]

C#vs VB.NET – 处理null结构

我碰到了这个,并想知道是否有人可以解释为什么这在VB.NET中工作时我会期望它会失败,就像在C#中一样 //The C# Version struct Person { public string name; } … Person someone = null; //Nope! Can’t do that!! Person? someoneElse = null; //No problem, just like expected 但是在VB.NET中…… Structure Person Public name As String End Structure … Dim someone As Person = Nothing ‘Wha? this is okay? 没有什么不同于null( Nothing!= null – LOL?) ,或者这只是处理两种语言之间相同情况的不同方式? […]

什么被认为是C#中的VB.NET模块?

VB.NET有类和模块,所以我的第一个问题是有什么区别? 另外,我注意到C#没有模块,只是类,是否有代替模块的东西或是否为C#删除了?

VB / C#中的“生成调试信息”是什么意思?

VB / C#中的“生成调试信息”是什么意思? “none”和“pdb-only”之间的区别非常明显。 但是“pdb-only”和“full”呢?

.NET IL .maxstack指令如何工作?

我想知道.maxstack是如何工作的。 我知道它与您声明的类型的实际大小无关,但与它们的数量有关。 我的问题是: 这仅适用于函数,还适用于我们要求的所有函数? 即使只是函数是.maxstack正在声明,如果你有分支,你怎么知道maxstack是什么? 你去看看所有的“路径”并尽可能返回最大值? 如果我将它设置为16并且实际上有17个变量会发生什么? 如果我把它设置为256,会有太大的惩罚吗?

如何将所有列作为属性导出DataTable到Xml?

问题:我正在将System.Data.DataTable导出为XML。 到目前为止它工作正常。 但我希望在属性中包含所有数据,这也可以正常工作。 但我现在的问题是,如果在一列中,所有行都是NULL,则不会写入空属性。 因此,如果我将XML读回DataTable,它缺少此列… 即使它们是空的,我如何强制写入所有列? (DataType不一定是字符串) public void ExportTable(string strDirectory, DataTable dtt) { using (System.Data.DataSet ds = new System.Data.DataSet()) { string strTable = dtt.TableName; ds.Tables.Add(dtt); ds.DataSetName = strTable; // Move data to attributes foreach (DataTable dt in ds.Tables) { foreach (DataColumn dc in dt.Columns) { dc.ColumnMapping = MappingType.Attribute; } } System.Xml.XmlWriterSettings settings = new […]

VB.NET和C#之间的二进制移位差异

我刚刚在翻译一些数据时发现了一个有趣的问题: CByte(4) << 8返回4 但是C#:( (byte)4 << 8返回1024 也就是说,为什么(CByte(4) << 8).GetType()返回类型{Name = “Byte” FullName = “System.Byte”} 然而C#: ((byte)4 << 8).GetType()返回类型{Name = “Int32” FullName = “System.Int32”} 有没有理由为什么这两个对待二进制移位是一样的? 接下来,是否有任何方法可以使C#位移与VB.NET相同(使VB.NET像C#一样执行CInt(_____) << 8 )?