小编Eri*_*tas的帖子

TypeDescriptor.GetProperties()vs Type.GetProperties()

请考虑以下代码.

Object obj;
PropertyDescriptorCollection A = TypeDescriptor.GetProperties(obj);
PropertyInfo[] B = obj.GetType().GetProperties(); // EDIT*
Run Code Online (Sandbox Code Playgroud)

我试图理解A和B之间的区别.根据我的理解,TypeDescriptor.GetProperties()将返回自定义TypeDescriptor属性,其中Type.GetProperties()将仅返回对象的内在"真实"属性.这是正确的吗?如果obj没有任何自定义TypeDescriptor属性,那么它只是默认返回对象的文字内在属性.


* EDIT之前的原始第二行代码(返回值错误):

PropertyDescriptorCollection B = obj.GetType().GetProperties();

c# reflection types typedescriptor

32
推荐指数
3
解决办法
2万
查看次数

我可以在vbscript中抛出错误吗?

我习惯用C#编程,这显然有一些非常强大的错误处理.现在我正在开发VBScript中的一个简短项目.我已经阅读了使用"On Error _______"和Err全局变量的VBscript的错误处理.

但是,有什么方法可以生成我自己的错误吗?例如,如果我的一个函数传递了错误类型的参数,我宁愿我的脚本只是在那时失败然后尝试继续.

error-handling vbscript

31
推荐指数
2
解决办法
3万
查看次数

FileInfo.MoveTo()vs File.Move()

这两种移动文件的方法有什么区别吗?

System.IO.FileInfo f = new System.IO.FileInfo(@"c:\foo.txt");
f.MoveTo(@"c:\bar.txt");

//vs

System.IO.File.Move(@"c:\foo.txt", @"c:\bar.txt");
Run Code Online (Sandbox Code Playgroud)

.net c# file-io

24
推荐指数
3
解决办法
3万
查看次数

当基本单词以I开头时,如何命名界面?

我想为"Items"创建一个接口.Typicaly我会通过在基本单词中添加"I"前缀来命名接口.但在这种情况下,我的基本单词已经以I开头.这里有几个想法

  • IItem:两个我
  • Iitem:改变这种情况
  • ItemInterface:跳过I前缀并写出Interface

什么看起来最好?有没有其他人遇到这个问题.如果是这样你做了什么?

.net c# interface naming-conventions

24
推荐指数
2
解决办法
2627
查看次数

我是否需要在孤立之前从对象中删除事件订阅?

如果我的软件有两个对象实例,其中一个订阅了另一个的事件.我是否需要在他们成为孤儿之前取消订阅他们才能被垃圾收集器清理干净?或者,为什么我应该清除事件关系还有其他原因吗?如果订阅的对象是孤立但订阅者不是,或反之亦然怎么办?

.net c# events garbage-collection

23
推荐指数
3
解决办法
5494
查看次数

UnauthorizedAccessException vs SecurityException

FileStream的MSDN构造函数表示它可能抛出UnauthorizedAccessException或SecurityException.以下是MSDN对这些异常的说法.

UnauthorizedAccessException: 操作系统因I/O错误或特定类型的安全错误而拒绝访问时引发的异常.

SecurityException: 检测到安全性错误时引发的异常.

这两个相似的例外情况有何不同?什么情况会引发他们中的任何一个?

.net securityexception exception-handling unauthorizedaccessexcepti

22
推荐指数
1
解决办法
1805
查看次数

保持我的数据库和文件系统同步

我正在研究一种将文件存储在文件系统中的软件,以及对数据库中这些文件的引用.因此,可以在数据库中查询上载的文件,而无需访问文件系统.从我在其他帖子中看到的内容来看,大多数人都说最好使用文件系统进行文件存储,而不是将二进制数据直接存储在数据库中作为BLOB.

所以现在我正在尝试理解设置它的最佳方法,以便数据库和文件系统保持同步,并且最终不会引用不存在的文件,或者文件占用空间.未引用的文件系统.以下是我正在考虑的两个选项.

选项1:首先添加文件参考

//Adds a reference to a file in the database
database.AddFileRef("newfile.txt"); 

//Stores the file in the file system
fileStorage.SaveFile("newfile.txt",dataStream); 
Run Code Online (Sandbox Code Playgroud)

此选项会有问题,因为在实际文件之前添加了对文件的引用,因此另一个用户可能会在文件实际存储到系统之前尝试下载文件.尽管如此,因为在存储文件之前可以使用对主文件的引用来创建对文件的引用.

选项2:首先存储文件

//Stores the file
fileStorage.SaveFile("newfile.txt",dataStream); 

//Adds a reference to the file in the database
//fails if reference file does not existing in file system
database.AddFileRef("newfile.txt"); 
Run Code Online (Sandbox Code Playgroud)

此选项更好,但可以让某人将文件上传到从未引用的系统.虽然这可以通过"清除"或"清理UFFileSystem"功能来修复,但删除任何未引用的文件.此选项也不允许使用数据库中的主键值存储文件.

选项3:待定状态

//Adds a pending file reference to database
//pending files would be ignored by others
database.AddFileRef("newfile.txt"); 

//Stores the file, fails if there is no 
//matching pending file reference in the database
fileStorage.SaveFile("newfile.txt",dataStream); …
Run Code Online (Sandbox Code Playgroud)

database file-storage

21
推荐指数
1
解决办法
2237
查看次数

Dispose()或Finalize()是否应该用于删除临时文件?

我有一个类,Path.GetTempFileName()它在活动时使用临时文件().我想确保在程序关闭后这些文件不会留在用户的硬盘驱动器上占用空间.现在我的类有一个Close()方法,它检查该类使用的任何临时文件是否仍然存在并删除它们.

将此代码放在Dispose()或Finalize()方法中会更有意义吗?

.net c# idisposable temporary-files

19
推荐指数
3
解决办法
1万
查看次数

如何更快地在Visual Studio中编写代码?

每当我开始一个新的软件项目时,我都会在开始绘制类图和其他流程图时花费大量时间来规划我如何看待应用程序的工作情况.这部分只需要进行大量的思考和测试.但是在某些事情已经计划好的时候,我不需要再考虑它了,我只需要对它进行编码.

IntelliSense绝对是天赐之物,因为能够通过点击TAB键自动生成代码.但现在我想知道:人们使用什么其他技术或工具尽可能快地将代码放到屏幕上?

.net c# performance visual-studio-2008

17
推荐指数
6
解决办法
3891
查看次数

如何制作类的只读版本?

我有一个具有各种公共属性的类,我允许用户通过属性网格进行编辑.对于持久性,此类还通过DataContractSerializer与XML文件进行序列化/反序列化.

有时我希望用户能够将他们所做的更改保存(序列化)到类的实例中.但在其他时候,我不想让用户保存他们的更改,而应该将属性网格中的所有属性都看作只读.我不想让用户进行以后永远无法保存的更改.类似于MS Word将允许用户打开当前由其他人打开但仅作为只读的文档.

我的类有一个布尔属性,用于确定该类是否应该是只读的,但是是否可以使用此属性以某种方式在运行时动态地向类属性添加只读属性?如果不是什么是替代解决方案?我应该将我的类包装在只读包装类中吗?

.net c# readonly-attribute

17
推荐指数
1
解决办法
1万
查看次数