Time of Update: 2017-02-27
.Net內建的產生縮圖的方法是Bitmap.GetThumbnailImage這個方法產生的縮圖不夠清 晰,一般我們會使用Graphics高品質插值發產生清晰的縮圖,這時候大小會不盡人意,怎 麼辦?我們可以使用jpeg壓縮的方法壓縮一下圖片,這樣圖片的大小會縮小到壓縮前的十分 之一。下面是完成這項工作的代碼:using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.
Time of Update: 2017-02-27
五一時去朋友那, 他問了個小問題, 只要寫幾十行代碼就可以很好的說明問題.可偏偏機子沒裝VS, 只好做罷.回來後想想, 要是有個線上的C#IDE就好了.於是上網查了下相關的資料, 整出來個簡單的線上C#IDE.做這個,主要要解決兩個問題, 一是如果將網頁上文字框的代碼編譯並執行;二是如果將程式運行結果在網頁上輸出.第一個問題不難,
Time of Update: 2017-02-27
構造我自己的ORM通過前面兩章的描述,我相信很多朋友都已經明白 我了下面將要討論到的ORM的實現方法了,那就是根據自訂Attribute來定義 O/R Mapping規則,然後通過反射來動態擷取此規則,動態構造SQL語句。由於這個小東西(ORM)出生在深圳,所以我想來想去,她應該有個深圳 的名字,所以我就叫她“MiniORM”。不知道各位認為如何?MiniORM採用的是ONE_INHERIT_TREE_ONE_CLASS(一個繼承樹對應於一個
Time of Update: 2017-02-27
一、 反射什麼是反射?簡單點吧,反射就是在運行時動態獲 取對象資訊的方法,比如運行時知道對象有哪些屬性,方法,委託等等等等。反射有什麼用呢?反射不但讓你在運行是擷取對象的資訊,還提 供運行時動態調用對象方法以及動態設定、擷取屬性等的能力。反射在 ORM中有什麼用呢?我這裡所討論的ORM實現是通過自訂Attribute的方 式進行映射規則的描述的。但是我們並不知道具體哪個對象需要對應哪個表,並 且這些對象是獨立於我們的ORM架構的,所以我們只能通過自訂Attribute來定
Time of Update: 2017-02-27
ORM(O/R Mappping對象關係映射)的基礎概念在我們的系統中,存 在大量的需要進行持久化儲存的對象,這些對象可能是各種各樣的業務單據,也 可能是我們的系統配置資訊等。另外一些屬於記憶體中使用而不需要進行持久化存 儲的對象,不屬於我們的討論範圍。而在支援對象序列化的語言比如C#,Java中 ,我們可以將這些對象序列化到磁碟檔案或者直接儲存到關聯式資料庫中。其中關 係數據庫是我們最主要也是最安全的選擇。在對資料庫中的業務資料進
Time of Update: 2017-02-27
C#反射的入門學習首先要明白C#反射提供了封裝程式集、模組和類型的對象等等。那麼這樣可以使用反射動態建立類型的執行個體,將類型綁定到現有對象,或從現有對象擷取類型並調用其方法或訪問其欄位和屬性。如果代碼中使用了屬性,可以利用反射對它們進行訪問。一個最簡單的C#反射執行個體,首先編寫類庫如下:using System;namespace ReflectionTest{public class WriteTest{//public method with parametorspublic void
Time of Update: 2017-02-27
多態是物件導向編程中三大機制之一,其原理建立在"從父類繼承而來的 子類可以轉換為其父類"這個規則之上,換句話說,能用父類的地方,就能用 該類的子類.當從父類派生了很多子類時,由於每個子類都有其不同的代碼實現, 所以當用父類來引用這些子類時,同樣的操作而可以表現出不同的操作結果,這就 是所謂的多態.1.瞭解什麼是C#多態性2.如何定義一個虛方法3.如何重載一個虛方法4.如何在程式中運用多態性面向 對象程式設計中的另外一個重要概念是C#多態性。在運行時,可以通過指向基類 的指標,
Time of Update: 2017-02-27
有沒有試過從一個集合裡面移除一個對象之後,這個集合仍然留有這個對象?世界之大,無奇不有。稍有疏忽,便會導致這種奇怪的現象。現在讓我們看看這個“不死”對象究竟是怎麼一回事。1、“不死”對象現身這個問題起初是我一個同事提出的,為了重現“不死”對象,現把代碼簡化如下:// Code #01IList products = new
Time of Update: 2017-02-27
本文主要介紹C#建立捷徑,包括介紹使 用 WSH 建立捷徑等方面。C#建立捷徑對於絕大多數 Windows 使用者來說都是小菜一碟了,然而,這 項工作卻為程式員帶來不少麻煩。.net 沒有提供簡便直接的建立捷徑的方法 ,那麼在 .NET 中我們如何為應用程式建立捷徑呢?1. C#建立捷徑C#建立捷徑實質上是一個副檔名為 .LNK 的檔案。右擊一個捷徑檔案
Time of Update: 2017-02-27
在現代的程式開發中,資源的同步是一個比較重要的課題,在.Net中,對這部分有很豐富類庫供我們使用,現在總結一下在各種情況下對資源同步的機制。1.將欄位聲明為volatile當一個欄位被聲明為volatile時,CLR中一些管理代碼和記憶體的內部機制將負責對欄位進行同步,並且總能保證讀取到的欄位資訊都為最新的值,被聲明為
Time of Update: 2017-02-27
在Visio的二次開發中,當發布圖紙的時候,我們往往需要儲存圖紙和圖紙的裝置資訊到資料庫,圖紙是將檔案以二進位儲存到資料庫中,裝置資訊是儲存圖紙對應的Shape的各種自訂屬性。本文主要介紹如何儲存圖紙背後的裝置資訊。這裡圖紙的裝置資訊可以通過一個裝置表如Device1來放置同一類型的裝置資訊,如負荷開關存放在Device1,架空線放在Device2等等,Device(n)是我們詳細放置某種類型裝置的表,其結構如下另外主要我們再建立一個表來管理那種類型的裝置對應那個表即可。如下圖所示:一旦建立了上
Time of Update: 2017-02-27
明察秋毫,很多情況下是非常需要的,例如,如果我們完善了一套系統,能夠將四川賑災的款項的籌集、採購、分發等步驟都能明察秋毫,相信整個世界會安靜很多。同樣,對於一個使用Visio進行二次開發的程式來說,背後你需要知道使用者增加了那些裝置,刪除了那些裝置,修改了那些裝置,這樣你才能對整個系統的資料進行有效控制,否則“賑災”款項就可能丟失了,呵呵。那我們應該如何做才能有效處理這些事件,達到對裝置的變更明察秋毫呢?我前面介紹了一篇文章《C#進行Visio開發的事件處理
Time of Update: 2017-02-27
幾種列印模式Visio的二次開發中,我們往往需要列印文檔,這也是正常不過的需求,Visio的Document對象提供了下面幾種列印模式: Constant Value Description visPrintAll 0 Prints all foreground pages.
Time of Update: 2017-02-27
1. Visio屬性值的轉換問題做過Visio開發的人知道,Visio中的屬性值也就是Cell.Formula的值通常包含兩對雙引號的(如""XX""), 如果要將屬性的值轉換正常的字串值,那麼需要去除雙引號。因此從Visio的Cell的Formula值中得到的字串需要經過下面方法處理一下:public static string FormulaStringToString(string formula) {
Time of Update: 2017-02-27
每個Shape有很多屬性,這裡我是指自訂屬性,每個屬性都對應一種類型,就像我們在SqlServer建立一個欄位的時候,需要指定其類型一樣。Visio的屬性類型有以下幾種: 值 說明 自動常量 0 字串。此為預設值。 visPropTypeString 1
Time of Update: 2017-02-27
我們知道,Visio的Shape對象有有3個比較特別的屬性,分別是Data1、Data2、Data3,平常我們很少用到它,因為我們如果需要屬性的話,可能會通過ShapeSheet的Customed
Time of Update: 2017-02-27
判斷Visio圖紙上是否圖紙有裝置(存在圖元), 有兩種方法,一種是通過Window對象的SelectAll方法,在判斷選擇的集合是否不為空白即可,如下:/**//// <summary> /// 判斷是否有對象選定 /// </summary> /// <param name="window"></param> ///
Time of Update: 2017-02-27
要實現一個螢幕小鍵盤,需要監聽所有鍵盤事件,無論表單是否被啟用。因此需 要一個全域的鉤子,也就是系統範圍的鉤子。什麼是鉤子(Hook)鉤子(Hook)是Windows提供的一種訊息處理機制平台,是指在程式正常 運行中接受資訊之前預先啟動的函數,用來檢查和修改傳給該程式的資訊,(鉤 子)實際上是一個處理訊息的程式段,通過系統調用,把它掛入系統。每當特定 的訊息發出,在沒有到達目的視窗前,鉤子程式就先捕獲該訊息,亦即鉤子函數 先得到控制權。這時鉤子函數即可以加工處理(改變)該訊息,也可以不作處理
Time of Update: 2017-02-27
眾所周知,委託和事件機制是C#應用程式的一個很重要的方面。Microsoft 的 BCL 類庫對Windows的控制項進行了幾乎全面的封裝,使應用程式 開發人員甚至不用瞭解訊息迴圈就能寫出相樣的程式。然而,甚至Windows UI編程到了 WPF 時代,訊息機制仍然佔據著舉足輕重的 作用。可以這麼說,沒有訊息迴圈就沒有Windows。(當然WPF很大程度上是對D3D 的封裝,它本身並不是基於Win32的訊息迴圈, 但是Micorsoft仍然在WPF中提供了 對Win32訊息機制的支援)。BCL2
Time of Update: 2017-02-27
原文地址:http://www.csharp411.com/c-object-initialization/當構造一個C#對象時,理解對象的範圍和構造器被初始化的序列是很重要的Derived static fieldsDerived static constructorDerived instance fieldsBase static fieldsBase static constructorBase instance fieldsBase instance