小编Mar*_*ell的帖子

.NET 4.0中动态语言运行时的限制是什么?

我知道匿名函数不支持作为动态方法调用的参数..NET 4.0中DLR的其他此类限制是什么?

.net c# dynamic-language-runtime

6
推荐指数
1
解决办法
913
查看次数

通用方法中的运算符重载

此代码段来自深度中的C#

    static bool AreReferencesEqual<T>(T first, T second)
        where T : class
    {
        return first == second;
    }

    static void Main()
    {
        string name = "Jon";
        string intro1 = "My name is " + name;
        string intro2 = "My name is " + name;
        Console.WriteLine(intro1 == intro2);
        Console.WriteLine(AreReferencesEqual(intro1, intro2));
    }
Run Code Online (Sandbox Code Playgroud)

上面代码片段的输出是

True 
False
Run Code Online (Sandbox Code Playgroud)

当main方法改为

    static void Main()
    {
        string intro1 = "My name is Jon";
        string intro2 = "My name is Jon";
        Console.WriteLine(intro1 == intro2);
        Console.WriteLine(AreReferencesEqual(intro1, intro2));
    }
Run Code Online (Sandbox Code Playgroud)

上面代码片段的输出是

True 
True …
Run Code Online (Sandbox Code Playgroud)

.net c# generics string-interning

6
推荐指数
2
解决办法
985
查看次数

使用LINQ Dynamic Query Library和Dictionary <string,object>和.AsQueryable()

在我以前的关于使用LINQ动态建立字符串(WHERE子句)和使用它们的问题之一,我被引向LINQ动态查询库动态LINQ.

第一个问题是它只适用于IQueryable,但是这可以通过在任何IEnumerable上使用.AsQueryable()扩展方法来克服.

我遇到的问题是Dynamic LINQ在我的Dictionary上寻找一个名为"CustomerID"的属性(或者传递给动态linq的字符串谓词的任何东西).由于词典只有键和值,这显然不起作用.

因此,我认为我很聪明,我创建了一个扩展类: Dictionary<string, object>ICustomTypeDescriptor`.

这允许我覆盖GetProperties()类型.哪个好.我现在可以迭代Dictionary键并将它们添加到PropertyDescriptorCollection返回的内容中.

但后来我遇到了另一个问题.在整个Dynamic LINQ库中,它们使用"Expression instance",它只包含一个Type.但是对于我的CustomTypeDescriptor工作解决方案,我需要一个实际的Type实例,然后才能申请TypeDescriptor.GetProperties(instance, false).

所以得到实际的问题.考虑到上述所有信息,如果数据存储在具有键值对的字典中,如何将字符串格式"CustomerID = 1234 AND Quantity> = 10000"中的自定义where子句应用于LINQ查询.

我目前的解决方案是将数据转换为a DataTable并使用该.Select(query)方法.哪个有效,但我有兴趣寻找其他解决方案.特别是用于基准测试目的.

有任何想法吗?

c# linq dictionary types properties

6
推荐指数
1
解决办法
6043
查看次数

在vbscript中调用C#dll

我试图从QTP调用C#dll(使用vbscript).我尝试了很多没有成功的事情:

  • Visual Studio 2010
  • 创建C#类libary(st.dll)

码:

using System;
using System.Collections.Generic;
using System.Text;   

namespace st
{
    public class Class1
    {
        public static int GetValue()
        {
            return 34;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
  • regasm /codebase st.dll
    • 失败'因为它不是有效的.NET程序集'

在QTP/vbscript中,我试过了

  • extern.Declare micInteger, "GetValue", "e:\st.dll", "GetValue"
    • 返回消息:'无效的过程调用或参数'

无论QTP如何,我都非常感谢有关如何从.vbs文件调用c#dll的任何见解.

c# dll vbscript qtp

6
推荐指数
1
解决办法
7456
查看次数

使用实时应用程序保存对web.config的更改时会发生什么?

当应用程序处于活动状态时保存对web.config的更改会发生什么?我问的原因是我现在正在开发一个建立在电子商务平台之上的网站/网络应用程序.在看似随机的间隔,该网站将停止响应.应用程序池的过程是正常的(发生这种情况时没有荒谬的内存或CPU使用情况).当我对web.config做一个小改动 - 比如添加空格或删除空格,然后保存 - 该网站似乎又回来了.我想通过了解更多关于保存后的事件顺序,我可以缩小我的问题的潜在原因.

编辑:我应该提到我们在IIS 6上运行.

.net web-config

6
推荐指数
1
解决办法
4155
查看次数

无声的例外,

我在64位遇到了这个奇怪的静默异常问题.这是什么造成这种行为?我想了解为什么会出现这种情况以及推荐的解决方案是什么?

主要:

    try
    {
        Application.Run(new Form1());
    }
    catch
        (Exception ex)
    {
        MessageBox.Show("Error");
    }

private void Form1_Load(object sender, EventArgs e)
{
    throw new Exception("oh no!");
}
Run Code Online (Sandbox Code Playgroud)

c# 64-bit exception-handling

6
推荐指数
1
解决办法
2339
查看次数

xmlwriter在一行中写入元素

我尝试在xml文件中保存我的应用程序中的一些元素,但是当我开始使用此代码开发它时:

public static void WriteInFile(string savefilepath)
        {
            XmlWriter writer = XmlWriter.Create(savefilepath);
            WriteXMLFile(writer);

        }
private static void WriteXMLFile(XmlWriter writer) //Write and Create XML profile for specific type 
        {
            writer.WriteStartDocument();
            writer.WriteStartElement("cmap");
            writer.WriteAttributeString("xmlns", "dcterms",null, "http://purl.org/dc/terms/");
            writer.WriteElementString("xmlns", "http://cmap.ihmc.us/xml/cmap/");
           // writer.WriteAttributeString("xmlns","dc",null, "http://purl.org/dc/elements/1.1/");
            //writer.WriteAttributeString("xmlns", "vcard", null, "http://www.w3.org/2001/vcard-rdf/3.0#");
            writer.WriteEndElement();
            writer.WriteEndDocument();
            writer.Close();
        }
Run Code Online (Sandbox Code Playgroud)

我发现记事本中的输出是这样的一行:

<?xml version="1.0" encoding="utf-8"?><cmap
xmlns:dcterms="http://purl.org/dc/terms/"><xmlns>http://cmap.ihmc.us/xml/cmap/</xmlns></cmap>
Run Code Online (Sandbox Code Playgroud)

我想它看起来像这样的多线:

<?xml version="1.0" encoding="utf-8"?> <cmap
xmlns:dcterms="http://purl.org/dc/terms/"><xmlns>http://cmap.ihmc.us/xml/cmap/</xmlns>
</cmap>
Run Code Online (Sandbox Code Playgroud)

c# xml xmlwriter

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

连接未关闭,连接的当前状态已打开

如何解决这个问题; 连接已在我的功能中关闭:

SqlConnection con=new SqlConnection(@"Here is My Connection");

public void run_runcommand(string query)   
{   

    try   
    {   
        con.Open();   
        SqlCommand cmd1 = new SqlCommand(query, con);   

        cmd1.ExecuteNonQuery();    
        con.Close();    
    }    
    catch (Exception ex) { throw ex; }                        
}    
//...
try       
{           
    string query="my query";           
    db.run_runcommand(query);          
}         
catch(Exception ex)            
{         
    MessageBox.Show(ex.Message);              
}
Run Code Online (Sandbox Code Playgroud)

c#

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

如何从Protocol Buffers .NET代码生成.proto文件?

所以让我们的类在文件夹中的属性如何从它们生成.proto标记文件(以获取例如C++代码)?

.net c# c++ protocol-buffers protobuf-net

6
推荐指数
1
解决办法
2752
查看次数

Protobuf校验和(CRC)

我将一些大对象存储到数据库(BLOB)中。正如我所见,protobuf是序列化/反序列化BLOB的最佳候选者之一。尽管它具有二进制格式,但仍易于读取和更改其内容(字符串,整数等)。因此,无论原始的 BLOB或修改过的内容(被黑客或聪明的用户?),我都需要某种数据验证。

一种可能是在表中有一个专用字段,将其称为crc,计算BLOB的校验和并将其放在那里。但是,如果crc是BLOB本身的一部分,那会更好(在许多情况下)。

我可以在protobuf流的末尾添加额外的字节,但必须删除它们(否则反序列化器将抛出异常“无效字段blablabla”)。

我可以将protobuf流放入包装器中,但是再次打开/包装仍然是开销。

是否有一种简单便宜的方法可以在protobuf流的末尾添加某些内容,从而避免反序列化期间需要进行其他操作?在XML中,我可以添加注释。我认为protobuf中没有注释,但是如何以1或2字节的CRC为例呢?

crc protocol-buffers

6
推荐指数
1
解决办法
3371
查看次数