Feb 27

MVC学习测试网站 不指定

kcao , 17:02 , 技术 , 评论(0) , 引用(0) , 阅读(1327) , Via 本站原创

学习MVC中,先在windows azure上做个网站自己测试用,先放第一个简单的物性计算功能,其他的以后再说:

http://fluidscalc.azurewebsites.net/

Tags: , , , ,
Feb 15

SQLite小记 不指定

kcao , 17:24 , 技术 , 评论(0) , 引用(0) , 阅读(2012) , Via 本站原创

1. 在64位机上用VS2010开发,在这里下载SQLite安装包

2. 下载的安装包里,有一个最重要的system.data.sqlite.dll文件,必须要选择复制到本地,也就是与所完成的EXE文件在同一目录下,或者在VS中选择Copy Local为True: 

3. 目标机必须安装MS VC++ 2010 redistributable package。在此下载

4. 如果工作机和目标机的平台不一样(一个是64位,一个是32位),则把2中的Copy Local回到False,按照以下结构布置文件:
<bin\>YourProgram.EXE
<bin\>System.Data.SQLite.DLL
<bin\x64\>SQLite.Interop.dll
<bin\x86\>SQLite.Interop.dll

其中<bin\>是工作目录,YourProgram.EXE是你自己的EXE程序,那2个SQLite.Interop.dll分别是对应64位与32位的执行DLL文件,而那个System.Data.SQLite.DLL则是一个小型DLL,与第2点中的DLL是不同的文件,这个才200多K,而那个有1M多。

这3个文件可以在这里下载:SQLiteBinaryforx86Andx64.zip
 

 

Tags: , , , ,
Nov 9

C#中用如下代码输出Grid到Excel,

C# Code Copy Code To Clipboard
  1. public static Microsoft.Office.Interop.Excel.Application _excelobj = new Microsoft.Office.Interop.Excel.Application();  
  2.   
  3. public static Workbook _newbook = _excelobj.Workbooks.Add();  
  4.   
  5. ////...  
  6.   
  7. Microsoft.Office.Interop.Excel.Worksheet _newsheet = _newbook.ActiveSheet;   

在输出后如果关闭了Excel再调用输出,会在上面第7行出现错误 :

The object invoked has disconnected from its clients. (Exception from HRESULT: 0x80010108 (RPC_E_DISCONNECTED))

究其原因,就是因为excel关闭以后,_newbook这个object不存在了。所以,在第7句前加一个判断即可解决:

C# Code Copy Code To Clipboard
  1. if (_excelobj.ActiveWorkbook == null)  
  2. {  
  3.      _newbook = _excelobj.Workbooks.Add();  
  4. }  
  5.   
  6. Microsoft.Office.Interop.Excel.Worksheet _newsheet = _newbook.ActiveSheet;   

 

Tags: , , , ,
Jul 24

C#类的克隆 不指定

kcao , 11:01 , 技术 , 评论(0) , 引用(0) , 阅读(2756) , Via 本站原创

 类成员要复制,用“=”只是添加一个reference,要真正的复制成员,正好能用上序列化。

先把类成员都标记序列化,然后使用如下代码即可。

C# Code Copy Code To Clipboard
  1. public MyClass Clone()  
  2. {  
  3.     MemoryStream stream = new MemoryStream();  
  4.     BinaryFormatter formatter = new BinaryFormatter();  
  5.     formatter.Serialize(stream, this);  
  6.     stream.Position = 0;  
  7.     return formatter.Deserialize(stream) as MyClass;  
  8. }  

调用时如下:

C# Code Copy Code To Clipboard
  1. MyClass newClass = new MyClass();  
  2. newClass = oldClass.Clone();  

即可生成一个与oldClass完全相同的newClass.

Tags: , , , ,
Jul 24

 C#中的默认Directory<>不支持序列化,也就是说无法用序列化方式把数据进行XML文件操作,要序列化,须对其进行改造如下:

C# Code Copy Code To Clipboard
  1. /// <summary>    
  2. /// 支持XML序列化的泛型 Dictionary    
  3. /// </summary>    
  4. /// <typeparam name="TKey"></typeparam>    
  5. /// <typeparam name="TValue"></typeparam>    
  6. [XmlRoot("SerializableDictionary")]  
  7. public class SerializableDictionary<TKey, TValue>  
  8.     : Dictionary<TKey, TValue>, IXmlSerializable  
  9. {   
  10.     #region 构造函数  
  11.     public SerializableDictionary()  
  12.         : base()  
  13.     {  
  14.     }  
  15.     public SerializableDictionary(IDictionary<TKey, TValue> dictionary)  
  16.         : base(dictionary)  
  17.     {  
  18.     }  
  19.   
  20.     public SerializableDictionary(IEqualityComparer<TKey> comparer)  
  21.         : base(comparer)  
  22.     {  
  23.     }  
  24.   
  25.     public SerializableDictionary(int capacity)  
  26.         : base(capacity)  
  27.     {  
  28.     }  
  29.     public SerializableDictionary(int capacity, IEqualityComparer<TKey> comparer)  
  30.         : base(capacity, comparer)  
  31.     {  
  32.     }  
  33.     protected SerializableDictionary(SerializationInfo info, StreamingContext context)  
  34.         : base(info, context)  
  35.     {  
  36.     }  
  37.     #endregion  
  38.     #region IXmlSerializable Members  
  39.     public System.Xml.Schema.XmlSchema GetSchema()  
  40.     {  
  41.         return null;  
  42.     }  
  43.     /// <summary>    
  44.     /// 从对象的 XML 表示形式生成该对象    
  45.     /// </summary>    
  46.     /// <param name="reader"></param>    
  47.     public void ReadXml(System.Xml.XmlReader reader)  
  48.     {  
  49.         XmlSerializer keySerializer = new XmlSerializer(typeof(TKey));  
  50.         XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue));  
  51.         bool wasEmpty = reader.IsEmptyElement;  
  52.         reader.Read();  
  53.         if (wasEmpty)  
  54.             return;  
  55.         while (reader.NodeType != System.Xml.XmlNodeType.EndElement)  
  56.         {  
  57.             reader.ReadStartElement("item");  
  58.             reader.ReadStartElement("key");  
  59.             TKey key = (TKey)keySerializer.Deserialize(reader);  
  60.             reader.ReadEndElement();  
  61.             reader.ReadStartElement("value");  
  62.             TValue value = (TValue)valueSerializer.Deserialize(reader);  
  63.             reader.ReadEndElement();  
  64.             this.Add(key, value);  
  65.             reader.ReadEndElement();  
  66.             reader.MoveToContent();  
  67.         }  
  68.         reader.ReadEndElement();  
  69.     }  
  70.   
  71.     /**/  
  72.     /// <summary>    
  73.     /// 将对象转换为其 XML 表示形式    
  74.     /// </summary>    
  75.     /// <param name="writer"></param>    
  76.     public void WriteXml(System.Xml.XmlWriter writer)  
  77.     {  
  78.         XmlSerializer keySerializer = new XmlSerializer(typeof(TKey));  
  79.         XmlSerializer valueSerializer = new XmlSerializer(typeof(TValue));  
  80.         foreach (TKey key in this.Keys)  
  81.         {  
  82.             writer.WriteStartElement("item");  
  83.             writer.WriteStartElement("key");  
  84.             keySerializer.Serialize(writer, key);  
  85.             writer.WriteEndElement();  
  86.             writer.WriteStartElement("value");  
  87.             TValue value = this[key];  
  88.             valueSerializer.Serialize(writer, value);  
  89.             writer.WriteEndElement();  
  90.             writer.WriteEndElement();  
  91.         }  
  92.     }  
  93.     #endregion  
  94. }  

用此类型定义的Directory<>变量,可以如下进行存取:

C# Code Copy Code To Clipboard
  1. public void Save(string filename)  
  2. {  
  3.     System.IO.StreamWriter writer = new System.IO.StreamWriter(filename, false, System.Text.Encoding.UTF8);  
  4.     XmlSerializer ser = new XmlSerializer(MyClassInstanceName.GetType());   
  5.     ser.Serialize(writer, MyClassInstanceName);  
  6.     writer.Close();  
  7. }  
  8.   
  9. public MyClassName Load(string filename)  
  10. {  
  11.     System.IO.StreamReader reader = new System.IO.StreamReader(filename);  
  12.     XmlSerializer ser = new XmlSerializer(MyClassInstanceName.GetType());  
  13.     MyClassName result = new MyClassName ();  
  14.     result.MyClassInstanceName = (SerializableDictionary<string,int>)ser.Deserialize(reader);  
  15.     reader.Close();  
  16.     return result;  
  17. }  

 

Tags: , , , , ,
分页: 1/6 第一页 1 2 3 4 5 6 下页 最后页 [ 显示模式: 摘要 | 列表 ]