Tag: 对象

如何在C#中将对象转换为Dictionary ?

如何在C中将动态对象转换为Dictionary #我该怎么办? public static void MyMethod(object obj) { if (typeof(IDictionary).IsAssignableFrom(obj.GetType())) { // My object is a dictionary, casting the object: // (Dictionary) obj; // causes error … } else { // My object is not a dictionary } }

.NET安全内存结构

我知道.NET库提供了一种以受保护/安全的方式存储字符串的方法= SecureString。 我的问题是,如果我想存储一个字节数组,最好的,最安全的容器是什么?

为什么对象没有接受IFormatProvider的重载?

将例如decimal转换为string ,使用CultureInfo.InvariantCulture并将其作为IFormatProvider传递。 但为什么这个超载不在object呢? 一个很好的实现是: public virtual string ToString() { // yadayada, usual ToString } public virtual string ToString(IFormatProvider provider) { return ToString(); } 这对object类没有任何伤害或好处,但是从它派生的对象可以覆盖重载,当你不确定类型时调用它会容易得多。 让我遇到这个的问题是当我创建一个方法来获取类的所有属性并将其写入xml时。 因为我不想检查对象的类型,所以我只调用了ToString 。 但这是一个小数,输出将基于线程的CurrentCulture ,这不是最佳的。 我能看到的唯一解决方法是将CurrentCulture更改为InvariantCulture ,然后将其更改回以前的状态。 但那只会是丑陋的,因为我必须先写下试试块等等。 我目前的代码是: foreach (var property in typeof(Order).GetProperties(BindingFlags.Public | BindingFlags.Instance). Where(c => ValidTypes.Contains(c.PropertyType))) { var value = property.GetValue(order, null); if (value != null) { writer.WriteElementString(property.Name, […]

为什么要使用类级访问修饰符而不是对象级?

在使用C#时,我最近意识到我可以从Foo的静态函数调用Foo对象的私有函数,甚至可以从其他Foo对象调用。 在我了解了访问修饰符的所有内容后,这对我来说听起来很奇怪。 据我所知,当你做一些属于某种内部过程的事情时,你会把一个函数设为私有。 只有对象本身知道何时使用这些函数,因为其他对象不应该/不能控制对象的流。 是否有任何理由为什么同一类别的其他对象应该从这个非常简单的规则中排除? 根据要求,一个例子: public class AClass { private void doSomething() { /* Do something here */ } public void aFunction() { AClass f = new AClass(); f.doSomething(); // I would have expected this line to cause an access error. } }

创建数据库查询方法

我不确定是否已被删除,但我想要做的是创建一个返回查询结果的方法,以便我可以重用连接代码。 据我了解,查询返回一个对象,但我如何传回该对象? 我想将查询作为字符串参数发送到方法中,并让它返回结果,以便我可以使用它们。 这就是我在黑暗中刺伤的东西,它显然不起作用。 这个例子是我尝试使用查询结果填充列表框; 工作表名称为Employees,字段/列是名称。 我得到的错误是“Complex DataBinding接受IList或IListSource作为数据源。”。 有任何想法吗? public Form1() { InitializeComponent(); openFileDialog1.ShowDialog(); openedFile = openFileDialog1.FileName; lbxEmployeeNames.DataSource = Query(“Select [name] FROM [Employees$]”); } public object Query(string sql) { System.Data.OleDb.OleDbConnection MyConnection; System.Data.OleDb.OleDbCommand myCommand = new System.Data.OleDb.OleDbCommand(); string connectionPath; //build connection string connectionPath = “provider=Microsoft.Jet.OLEDB.4.0;Data Source='” + openedFile + “‘;Extended Properties=Excel 8.0;”; MyConnection = new System.Data.OleDb.OleDbConnection(connectionPath); […]

SSIS脚本任务获取文件名并存储到SSIS对象变量

我正在尝试构建一个将用于标准化文件系统归档过程的SSIS包。 基本上,我将能够将信息添加到配置表,然后使用此表来存档指定文件夹中的某些文件。 我的问题是很多文件都有动态命名,所以我需要获取所有文件的列表,然后查询以确定我应该触摸哪些文件。 在尝试编写包的一部分时,不是C#/ VB程序员会导致一些问题,它会抓取指定网络目录中的所有文件,然后将这些文件名反馈回SSIS对象变量。 我有一个字符串变量’User :: SourceNetworkFolderName’,它将包含我想要读取所有文件的文件夹的UNC位置。 我想将所有这些文件名(带扩展名)传递回名为’User :: SourceFilesInTheDirectory’的SSIS对象变量。 一旦我将文件名列表放入对象变量中,我就会将它们循环到SQL表中。 有没有人对如何获取从我的变量目录到我的SSIS对象变量的所有文件名列表有任何具体建议? 先感谢您! 编辑:这是我更新的代码: using System; using System.Data; using Microsoft.SqlServer.Dts.Runtime; using System.Windows.Forms; using System.IO; using System.Collections.Generic; using System.Data.SqlClient; namespace ST_f5e4ae71f14d40d8811af21fa2a9a622.csproj { [System.AddIn.AddIn(“ScriptMain”, Version = “1.0”, Publisher = “”, Description = “”)] public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase { #region VSTA generated code enum ScriptResults […]

循环遍历对象并获取属性

我有一个方法返回操作系统属性列表。 我想循环遍历属性并对每个属性进行一些处理。所有属性都是字符串 我如何循环对象 C# // test1 and test2 so you can see a simple example of the properties – although these are not part of the question String test1 = OS_Result.OSResultStruct.OSBuild; String test2 = OS_Result.OSResultStruct.OSMajor; // here is what i would like to be able to do foreach (string s in OS_Result.OSResultStruct) { // get […]

C#从COM对象获取progID

我想知道是否有办法在c#中获取com对象的progId。 例如 – 我有一个webBrowser对象,它暴露了一个COM文档对象。 有没有办法弄清楚该文档对象的progID是什么? 我知道你可以从progID获取对象,只是不知道如何做反过来。

检测类属性是否为引用类型

是否有可能在查看类的属性时检测它们中的任何一个是否为引用类型。 以下面为例: public class Client { public int Id { get; set; } public string Name { get; set; } } public class ProgrammeClient { public int Id { get; set; } public bool IsActive { get; set; } public IClient Client { get; set; } } ProgrammeClient: – Id和IsActive是属性,但Client是引用类型。 有没有办法检测到这个? 非常感谢,Kohan。 附录 我问的原因是:我使用的映射器在匹配属性名称和复制值之前检查类型是否相同。 我希望检测类并覆盖类型匹配,如果THEY类型匹配,只需复制类属性。

WCF服务返回字典数组

我一直在尝试使用SilverLight客户端来调用ASP.Net WCF服务,该服务将返回Dictionary 。 当字典中的值是int , string或Guid等简单类型时,这很好用。 但是,我现在有一个场景,我需要其中一个值为Dictionary的数组! 这一切都编译得很好,服务的签名没有改变,但服务调用现在失败了。 任何想法如何解决它? 我试图使用KnownType和ServiceKnownType属性来注释我的服务类和方法,但这不起作用。 这是一段代码: [ServiceContract(Namespace = “”)] [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)] public class Service1 { [OperationContract] [ServiceKnownType(typeof(Dictionary))] public Dictionary GetObject() { return new Dictionary() { { “pty1”, 1 }, { “pty2”, Guid.NewGuid() }, { “pty3”, “blah” }, { “pty4”, new Dictionary[] { new Dictionary() { { “pty1”, 4 }, […]