我正在寻找一种简单的方法来检查C#中的对象是否可序列化.
我们知道,通过实现ISerializable接口或将[Serializable]放在类的顶部,可以使对象可序列化.
我正在寻找的是一种快速检查方法,而无需反映类以获得它的属性.接口可以快速使用is语句.
使用@Flard的建议这是我提出的代码,尖叫是有更好的方法.
private static bool IsSerializable(T obj)
{
return ((obj is ISerializable) || (Attribute.IsDefined(typeof (T), typeof (SerializableAttribute))));
}
Run Code Online (Sandbox Code Playgroud)
或者甚至更好地获取对象的类型,然后在类型上使用IsSerializable属性:
typeof(T).IsSerializable
Run Code Online (Sandbox Code Playgroud)
请记住,这似乎只是我们正在处理的类,如果类包含其他类,您可能想要检查它们或尝试序列化并等待错误,如@pb指出的那样.
任何跟踪系统是否都有命令行界面?
以下是我感兴趣的功能列表:
Run Code Online (Sandbox Code Playgroud)description:string some-property:integer required
Run Code Online (Sandbox Code Playgroud)// Creates task <task tracker>.exe -create {description: "Foo", some-property: 1} // Search for tasks with description field starting from F <task tracker>.exe -find { description: "F*" }
XCopy部署
它不应该要求安装繁重的DBMS
多个用户支持
所以它不仅仅是一个人的待办事项列表
我正在尝试使用MinGW在Windows XP下编译C程序.gcc.exe提供以下错误:
stdio.h:没有这样的文件或目录
代码(hello.c)如下所示:
#include < stdio.h >
void main()
{
printf("\nHello World\n");
}
Run Code Online (Sandbox Code Playgroud)
我使用批处理文件来调用gcc.批处理文件如下所示:
@echo off
set OLDPATH=%PATH%
set path=C:\devtools\MinGW\bin;%PATH%
set LIBRARY_PATH=C:\devtools\MinGW\lib
set C_INCLUDE_PATH=C:\devtools\MinGW\include
gcc.exe hello.c
set path=%OLDPATH%
Run Code Online (Sandbox Code Playgroud)
我试过选项-I没有效果.我做错了什么?
在.NET中,在此代码之后,什么机制阻止Thread对象被垃圾回收?
new Thread(Foo).Start();
GC.Collect();
Run Code Online (Sandbox Code Playgroud)
是的,可以安全地假设某些东西有对线程的引用,我只是在徘徊究竟是什么.出于某种原因,Reflector没有向我展示System.Threading,所以我不能自己挖掘它(我知道MS发布了.NET框架的源代码,我只是没有它的方便).
我在服务器上运行的虚拟机无法停止或重新启动 - 我无法再登录它,我无法使用VMware服务器控制台停止它.还有其他VM正在运行,因此重新启动主机是不可能的.有没有其他方法迫使一台机器停止?
我有一张带有大量标记的雅虎地图(~500).地图执行得很好,直到我关闭页面,此时它暂停(在Firefox中)并显示"停止运行此脚本?" 对话框(在IE7中).如果给予足够长的时间,脚本就会完成其工作.
我能做些什么来减少这种延迟吗?
这个剥离的代码表明了这个问题:
<script type="text/javascript">
var map = new YMap(document.getElementById('map'));
map.drawZoomAndCenter("Algeria", 17);
for (var i = 0; i < 500; i += 1) {
var geoPoint = new YGeoPoint((Math.random()-0.5)*180.0, (Math.random()-0.5)*360.0);
var marker = new YMarker(geoPoint);
map.addOverlay(marker);
}
</script>
Run Code Online (Sandbox Code Playgroud)
如果您动态添加和删除标记,我知道事件处理程序会发生一些内存泄漏,但这些是静态的(尽管问题可能是相关的).哦,我知道地图上的这些标记可能不是传达数据的最佳方式,但这不是我正在寻找的答案;)
编辑:根据以下建议,我尝试过:
window.onbeforeunload = function() {
map.removeMarkersAll();
}
Run Code Online (Sandbox Code Playgroud)
和
window.onbeforeunload = function() {
mapElement = document.getElementById('map');
mapElement.parentNode.removeChild(mapElement);
}
Run Code Online (Sandbox Code Playgroud)
但都没有奏效:(
我没有看到很多支持Grails开发facebook apps.I只是想知道周围的人是否正在开发grails上的facebook应用程序
您通常如何分离代码库和相关的单元测试?我知道有人为单元测试创建了一个单独的项目,我个人觉得这个项目令人困惑且难以维护.另一方面,如果您将代码及其测试混合在一个项目中,您最终会得到与您的单元测试框架(无论是NUnit,MbUnit还是其他任何内容)相关的二进制文件以及您自己的二进制文件.
这对于调试很好,但是一旦我构建了发布版本,我真的不希望我的代码再次引用单元测试框架.
我找到的一个解决方案是将所有单元测试都包含在#if DEBUG - #endif指令中:当没有代码引用单元测试程序集时,编译器足够聪明,可以省略编译代码中的引用.
有没有其他(可能更舒适)的选择来实现类似的目标?
我想在Java中的String类中添加一个方法AddDefaultNamespace(),这样我就可以输入"myString".AddDefaultNamespace()而不是DEFAULTNAMESPACE +"myString",以获得类似"MyDefaultNameSpace.myString"的内容.我不想添加另一个派生类(例如PrefixedString).
也许这种方法对你不好,但我个人讨厌使用"+".但是,无论如何,是否可以在Java中向String类添加新方法?
感谢致敬.
我正在重新评估我的第三方控件.我目前使用ASP.Net和WinForms的Infragistics工具套件.你使用什么控件,你会推荐它们吗?
.net ×3
c# ×2
assemblies ×1
c ×1
controls ×1
facebook ×1
grails ×1
infragistics ×1
java ×1
javascript ×1
maps ×1
reference ×1
string ×1
unit-testing ×1
vmware ×1
yahoo-maps ×1
yui ×1