如何读取值,让我们说:'99'来自包含此代码的程序集?
using Sytem;
public class Class1
{
public Class1() {
// array initializer, want to read '99', '100'... from assembly
var a = new double[,] { { 1, 2, 3 }, { 99, 100, 101 } };
// ...
}
}
Run Code Online (Sandbox Code Playgroud)
ILDASM中的方法:
.method /*06000001*/ public hidebysig specialname rtspecialname
instance void .ctor() cil managed
// SIG: 20 00 01
{
// Method begins at RVA 0x2080
// Code size 29 (0x1d)
.maxstack 3
.locals /*11000001*/ init ([0] float64[0...,0...] …Run Code Online (Sandbox Code Playgroud) 我想知道为什么下面的代码片段没有给出预期的结果?它对一个不太小的随机数组进行排序,并使用3种不同的方法.我期待速度如此:
代码:
class DescComparer : IComparer<double> {
// simple comparison
// (yes, its not exactly correct ...)
public int Compare(double x, double y) {
return (x > y) ? -1 : 1;
}
}
static void Main(string[] args) {
Stopwatch sw = new Stopwatch();
Random rand = new Random();
DescComparer comparer = new DescComparer();
double[] a = new double[1000000];
for (int r = 0; r < 20; r++) {
// init array
for (int …Run Code Online (Sandbox Code Playgroud) GreatLib.dll的供应商部署了一个自定义控件。它正在客户Winforms应用程序中使用。GreatLib具有很强的命名能力,并公开了一些类型。当这些类型用作客户窗体中的公共属性时,它们也可以在Windows窗体设计器中使用。这是麻烦开始的地方:
设计人员将在表单的资源文件中为所有这些类型创建项目,并在这些项目中序列化其default(?)值。由于GreatLib是严格命名的,因此引用将包含程序集的完全限定名称。(我认为这就是Resgen所做的事情?)。这些项目可能如下所示:
<data name="vector3Control1.value" mimetype="application/x-microsoft.net.object.binary.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFRJTE51bWVyaWNzLCBWZXJzaW9uPTQuMi41MzM4LjQ4MDIxLCBD
dWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPThkOWJmNTBlZjg1NDczNGQFAQAAABpJTE51bWVy
aWNzLkRyYXdpbmcuVmVjdG9yMwMAAAADbV94A21feQNtX3oAAAALCwsCAAAAAAAAAAAAAAAAAAAACw==
</value>
</data>
Run Code Online (Sandbox Code Playgroud)
设计器在Form.Designer.cs文件中生成一些与此类似的代码,以便读取资源项:
this.vector3Control1.value = ((ILNumerics.Drawing.Vector3)(resources.GetObject("vector3Control1.value")));
Run Code Online (Sandbox Code Playgroud)
供应商提供了对GreatLib的更新,客户将旧版本替换为新版本。但是资源文件将保持不变!因此,我们可以在Designer.cs代码上获得InvalidCastExeption,或者-如果不再找到旧程序集-则是FileNotFoundException。
建议使用哪种方式处理resx文件中的强名称?
通过使用完全防止它们
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
Run Code Online (Sandbox Code Playgroud)
?还是按照HansPassant的建议在每次更新时手动转换base64数据?
resources strongname windows-forms-designer visual-studio winforms
我不是前端开发人员,并且一直在努力让 highlight.js 做我想做的事。需要在博客中很好地显示代码。好的,它完美地工作,因为它呈现了我发布的代码
<pre><code>...</code></pre>
Run Code Online (Sandbox Code Playgroud)
...使用所选的样式非常漂亮和丰富多彩,例如idea.css。我已经准备好了所有样式和 highlight.pack.js 可以放入目录中。
但是在这些标签之间粘贴整个程序太麻烦了!如果代码可以保留在其文件中,则它可以更干净地重用于其他事物。
什么是最短和最优雅的方法(如果可能,不加载任何外部库)让它myCode.py从这些标签之间的同一目录中的python文件中提取代码?
该库的主要参考资料在这里。
.net ×2
c# ×1
comparison ×1
frontend ×1
highlight.js ×1
il ×1
javascript ×1
jquery ×1
performance ×1
reflection ×1
resources ×1
sorting ×1
strongname ×1
winforms ×1