我目前正在深入研究.net的内部运作,这意味着IL.作为练习,我想为.net构建一个brainf..k编译器(是的,它们已经存在,但正如所说的那样是为了学习目的).
目前我只是编写了一些包含.il的文本文件,并使用ilasm编译它们.但我想知道我是否可以/应该更深入一级并直接写字节码?
我的"关注点"是编译EXE时的Windows PE Stuff - 而不是ilasm我需要某种Bytecode链接器来获取我的MSIL/CIL字节码并为它生成PE Stuff?
或者编译器"只"将他们的语言编译成IL并执行ilasm?是否有我可以从编译器调用/嵌入的托管版本?
我有一个程序使用gethostbyname(在Windows中),以便将IP地址转换为主机名.
但是,它仅适用于IPv4 ......
什么是IPv6的正确替代品?
谢谢.
我正在开始一个新项目并创建业务对象和数据访问等.我只是使用普通的旧clr对象而不是任何orms.我创建了两个类库:1)Business Objects - 保存我的所有业务对象,所有这些对象都很轻,只有属性和业务规则.2)存储库 - 这是我所有的数据访问.
我的大多数对象都有子列表,我的问题是延迟加载这些值的最佳方法是什么,因为如果我不需要,我不想带回不必要的信息.
我已经考虑过在子属性上使用"get"来检查它是否为"null",以及是否调用我的存储库来获取子信息.从我所看到的这有两个问题:1)对象"知道"如何获得自己我宁愿不在对象中保存数据访问逻辑.2)这需要两个类相互引用,在visual studio中引发循环依赖性错误.
有没有人对如何克服这个问题或我的项目布局的任何建议以及可以改进的地方有任何建议?
谢谢
我有一个类的属性的集合,并希望通过索引迭代集合来更新每个属性的值.
1)我以这种方式创建属性集合
private PropertyInfo[] GetPropertiesOfMyClass()
{
Type myType = (typeof(myClass));
PropertyInfo[] PropertyInfoArray = myType.GetProperties(
BindingFlags.Public |
BindingFlags.Instance);
return PropertyInfoArray;
}
Run Code Online (Sandbox Code Playgroud)
2)现在,我想通过这种方式根据索引设置每个值
public void UpdateProperty(MyClass instanceOfMyClass, string valueToUpdate, int index)
{
//TODO:
//1. Get an individual property from the GetPropertyOfMyClass() using index
//2. Update the value of an individual property of the instanceOfMyClass
}
Run Code Online (Sandbox Code Playgroud)
我希望能够从Controller中调用UpdateProperty,如下所示:
UpdateProperty(instanceOfMyClass, valueToUpdate, indexOfTheProperty);
Run Code Online (Sandbox Code Playgroud)
老实说,我不知道如何在游戏中涉及instanceOfMyClass,因为GetProperty只能与myClass一起玩.
因为我看到我可以使用Name,PropertyType,...来获取有关该属性的信息.所以,我也尝试过GetPropertyOfMyClass()[index] .SetValue(...),但是我在构造函数的参数中迷失了,所以我放弃了.
我想要的是只需使用索引就可以更新集合中属性的值.
谢谢你的帮助
基本上我正在寻找能让我轻松访问useragentstring.com等信息的东西,但是在JS中,我没有解析用户代理并寻找每一个可能的文本.对象可能是这样的:
browser = UserAgent.Browser; // Chrome
browserVer = UserAgent.BrowserVersion; // 5.0.342.9
os = UserAgent.OperatingSystem; // Windows NT
osVer = UserAgent.OperatingSystemVersion; // 6.1
layoutEng = UserAgent.LayoutEngine; // WebKit
layoutEngVer = UserAgent.LayoutEngineVersion; // 533.2
Run Code Online (Sandbox Code Playgroud)
有类似的东西存在,还是我必须自己写一个?编写另一个用户代理解析器似乎并不容易,所有这些模仿都可以追溯到网络的黑暗时代.
具体来说,我正在寻找一些不仅将用户代理分成几部分并将它们交给我的东西,因为那与用户代理本身一样无用; 相反,它应该解析用户代理并识别引擎,浏览器,操作系统等,并仅返回具体部分,如示例中所示.
是否有可公开获得的数据,估计每个Mac OS X版本的用户数量?特别是对于主要版本(10.6.*Snow Leopard,10.5.*Leopard,......)?
我正在编写一个新的应用程序,我想知道是否仍然值得支持预装Leopard版本的Mac OS X,主要是Tiger.我使用Sparkle可以选择跟踪每次更新检查的系统配置文件,但由于应用程序仍处于早期版本0.*发布到目前为止用户数量非常少,因此几乎没有统计相关性.该应用程序旨在支持Tiger和up,但我还没有在系统配置文件中看到Tiger用户.
我发现除了决定是否仍支持旧版本的用户数量之外,还有一些其他因素在起作用.例如,我等了很长时间才升级到Leopard自己,在某些时候我有这么看惯了"至少需要的Mac OS X 10.5"我完全停止寻找新的应用程序.我希望那些仍然使用Tiger的人也是如此.
不过,拥有这些数据会很高兴.也是出于好奇......最近有人看到有人还在使用猎豹吗?;)
我开发了一些javascript增强页面,可以在最近的Firefox和Safari上正常运行.我错过了检查Internet Explorer,现在我发现这些页面在IE 6和7上都不起作用(到目前为止).脚本以某种方式不执行,页面显示好像javascript不存在,虽然执行了一些javascript.我使用自己的库与DOM操作,从YUI 2我使用YUI-装载机和XML-HTTP请求,并在一个页面上我用"psupload",它依赖于JQuery的.
我正在从Office XP安装Microsoft脚本编辑器,现在将进行调试.我现在也会写具体的测试.
IE的典型失败点是什么?我可以睁开眼睛的方向.
我找到了这个页面,显示了一些差异.访问:Quirksmode
您可以从您的经验中找到一些我应该首先寻找的典型事物吗?
我稍后会在这里提出更多有关具体任务的问题,但是现在我对你的经验感兴趣,为什么IE通常会在Firefox中运行正常的脚本失败
编辑:谢谢你们所有这些伟大的答案!
与此同时,我调整了整个代码,以便它也适用于Internet Explorer.我现在整合了jQuery并构建了我自己的类.这是我的基本错误,我从一开始就没有在jQuery上构建所有的东西.我现在有.
JSLint也帮助了我很多.
许多来自不同答案的单一问题都有所帮助.
我正在尝试制作这个命令:
sed bla bla filename | awk '{printf "%s %s_entry_%.3f %.3f %.3f %.3f",$1,$3,$4,$5,$6,$7}'
Run Code Online (Sandbox Code Playgroud)
但问题是,我希望%.3f部分是可变的.所以在一个案例中它可能是%.3f而在另一个案例中它可能是%.3f%.3f%.3f.因此,为了清楚起见,我将在示例代码中使用静态代码.所以如果我想要这些%.3f中的4个并将它们放在变量$值中,如下所示:
values="%.3f %.3f %.3f %.3f"
Run Code Online (Sandbox Code Playgroud)
那么我怎样才能把这个字符串放在awk表达式中,而不是让awk只是简单地将"$ {values}"放在那里.以下是我的非工作尝试:
sed bla bla filename | awk '{printf "%s %s_entry_${values}",$1,$3,$4,$5,$6,$7}'
Run Code Online (Sandbox Code Playgroud) 我想在传统的win32应用程序中使用WPF窗口.我想以类似的方式表现它们,就像WPF窗口始终显示在win32窗口之上.
为此,我想将WPF窗口的所有者设置为win32窗口,但我不知道如何实现这一点.
这里有什么帮助?
由于答案隐藏在一些链接后面,这里的代码就是诀窍:
System::Windows::Interop::WindowInteropHelper^ helper = gcnew System::Windows::Interop::WindowInteropHelper(myWpfChildWindow);
helper->Owner = (System::IntPtr)myMainWindowHWND;
Run Code Online (Sandbox Code Playgroud)