Time of Update: 2018-12-07
static class Program { private const int WS_SHOWNORMAL = 1; [DllImport("User32.dll")] private static extern bool ShowWindowAsync(IntPtr hWnd, int cmdShow); [DllImport("User32.dll")] private static extern bool
Time of Update: 2018-12-07
目錄1. 使用者賬戶名稱 - 使用Environment類 2. 使用者賬戶資訊 - 使用WindowsIdentity和IdentityReference 3. 使用IPrincipal判斷使用者賬戶類型(支援使用者賬戶控制(UAC)提示) 返回目錄 1. 使用者賬戶名稱 -
Time of Update: 2018-12-07
首先由於該方法用LinkDemand檢查SecurityPermissionAttribute.SerializationFormatter許可權,因此部分受信任環境下可能無法使用。該方法相比Deserialize方法有更好的效能。 代碼://+ using System.Runtime.Serialization.Formatters.Binary//+ using System.IO; //建立一個100個元素的字典var dic = new Dictionary<int,
Time of Update: 2018-12-07
這兩個方法和SignData和VerifyData是等價的,只不過傳入的參數是雜湊值而不是未經處理資料。也就是說SignData中RSA加密的雜湊值函數是自己計算的。而SignHash需要我們來計算然後傳入參數。 唯一一點需要注意的是,SignHash(和VerifyHash)方法需指定的雜湊演算法雖然是字串對象,但其是以雜湊演算法標識符 (OID) 的形式。所以需要另外一個方法就是:CryptoConfig.MapNameToOID來專門的一個雜湊演算法類型字串轉換成雜湊演算法標識符
Time of Update: 2018-12-07
今兒看到兩位同學在討論GetHashCode方法的執行,貌似他們的對象等同性判斷挺複雜的,而又想把同樣的邏輯寫在GetHashCode中,然後激烈的討論著用什麼演算法讓GetHashCode返回的整數更具唯一性。我覺得簡而言之GetHashCode的作用就是:盡量用最快的時間對對象進行初步判斷。當然這裡時間的快慢和判斷的深度沒有具體要求,只要沒有走極端就可以(比如太費時間,或者判斷深度太淺)。因此沒必要吧GetHashCode搞得太複雜!還有人錯誤的認為字典的儲存是完全靠GetHashCode的
Time of Update: 2018-12-07
當我用三種方式建立同一個國家的RegionInfo後,本以為他們都相等,可沒想到事實並不是這樣,來看代碼:用”zh-cn”,”cn”和2052(LCID)建立中國的RegionInfo。然後看看他們是不是都相等。var regions = new RegionInfo[]{ new RegionInfo("zh-cn"), new RegionInfo("CN"), new RegionInfo(2052)}; Console.WriteLine(regions.All(r =
Time of Update: 2018-12-07
當使用Serializable特性,如果類有更新(但有要求和以前序列化的類對象保持相容),可以使用OptionalField特性來標記新加的欄位。至於Serializable特性在類繼承上,問題不會很大,只要父類被標記Serializable特性,那麼子類就可以序列化父類的內容。 而對於ISerializable介面,由於序列化和還原序列化都得自己動手,那麼處理類更新和繼承問題就會稍複雜一些。 比如版本更新,我們可以在SerializationInfo中加入自己的版本資訊,在還原序列化中再根據不
Time of Update: 2018-12-07
StreamingContext類型出現在諸多序列化的方法中。ISerializable的GetObjectData和特殊的建構函式(用於還原序列化)。還有[OnDeserialized], [OnDeserializing], [OnSerialized],
Time of Update: 2018-12-07
Visual Basic Visual J# C++ C# NEW JScript Visual FoxPro 加法 加運算 + + + + + + 減運算 - - - - - - 乘法 乘運算 * * * * * * 除運算 / / / / / / 整數除法 \ n/a / 1 模數(僅返回餘數的除法) Mod % % % %(也可以處理浮點) %; Mod 冪 ^ n/a
Time of Update: 2018-12-07
Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> private string SendRequest(string account, string cardNumber, string cardPass) { string targetUrl = https://xxx.com/;//要提交資料的目標網站
Time of Update: 2018-12-07
做一個項目時,有個日期欄位客戶可輸入可不輸入值,直接把DateTime=Null時會出錯,提示錯誤: 無法將 NULL 轉換成"System.DateTime",因為它是一種實值型別 在網上查看下相關資料後,找到處理辦法:Nullable<DateTime> now = DateTime.Now;Nullable<DateTime> now = null;當然也可以縮寫:DateTime? now = DateTime.Now;DateTime? now =
Time of Update: 2018-12-07
情境:最近在測試一個.NET的Http Module,這個Module是用來做URL重寫的。剛開始進展的比較順利,因為該Module裡面的方法參數基本上都是String,後來這個Module進行了一下重構,所有參數都變成了HttpContext了,這就直接導致原來的單元測試都跑不起來了,接著就開始了弄HttpContext了。1. 採用Visual
Time of Update: 2018-12-07
1. 水晶易表不能識別WS介面返回的DataTable或DataSet資料類型,會提示“無法載入URL”3. C#調用Oracle的Package,並返回資料列表2. 經查證,可以接受string類型的,如果需要返回資料列表,那麼需要藉助數組來返回,代碼實現如下:public WeekSale_Table GetData(string skc1, string skc2, string week1, string week2, string week3, string week4)
Time of Update: 2018-12-07
由於要在Web項目中採用RFID讀取功能,所以有必要開發Activex,一般情況下開發Activex都採用VC,VB等,但對這兩塊不是很熟悉,所以採用C#編寫Activex的方式實現。本文方法參考網路1.編寫WindowsFromControls2.發布WindowsFormControls為Activex3.在web中使用該Activex 首先編寫windows控制項如何編寫不再詳述(注意一個地方,GUID自己用vs工具產生一個,下面會用到。我的0CBD6597-3953-4B88-8C9F
Time of Update: 2018-12-07
ComVisible特性很好理解,指定類型可以被COM類庫使用,tlbexp.exe會根據ComVisible來產生相應類型的資料。ComVisible特性也可以針對程式集或者類型成員。 而ComImport特性正好是於此相反的,發生在tlbimp.exe在匯入COM類型類庫的時候,產生的託管類型會標記有ComImport特性,同時還會有Guid特性因為COM類型用GUID標識。比如我們手動建立一個Microsoft Internet
Time of Update: 2018-12-07
注意:SecurityAction.RequestMinimum,RequestOptional,RequestRefuse在.NET 4.0後已被廢棄。不過其在.NET
Time of Update: 2018-12-07
不難,訣竅就是利用LINQ的GroupBy方法,然後依靠返回結果的IGrouping介面的Count屬性來判斷是否是重複元素。代碼://重複元素:3,4,5//不重複元素:1,8,9int[] arr = { 1, 3, 3, 3, 4, 5, 4, 5, 8, 9, 3 }; //不重複元素var unique = arr.GroupBy(i => i) .Where(g => g.Count() == 1) .Select(g =>
Time of Update: 2018-12-07
反射Emit中的TypeBuilder.DefineMethod並沒有直接提供對泛型參數的支援。整體過程也不是一個簡單的方法調用就可以解決的,具體總結如下過程:調用沒有指定參數和傳回值類型的TypeBuilder.DefineMethod重載,得到MethodBuilder。 使用MethodBuilder.DefineGenericParameters方法來定義泛型參數的類型名稱,比如T,K,V……然後最終方法就是xxx<T, K, V>。
Time of Update: 2018-12-07
前面一篇文章:.NET(C#)平台叫用:DllImportAttribute.CharSet和字串封送編碼,介紹了平台叫用時封送字串和DllImportAttribute.CharSet的各種關係。事實上還有另外一種方法,因為字串本身也是指標,那麼在調用聲明時用IntPtr(而不是String類型)也可以,此時則需要我們手動對IntPtr做處理。使用的則是Marshal類的StringToHGlobal方法將託管堆中的字串轉換成一個非託管堆中的指標。注意需要用Marshal.FreeHGloba
Time of Update: 2018-12-07
當不使用SMTP的25連接埠號碼發送郵件,某些低許可權執行環境可以會拋出異常,最好還是在執行操作前進行許可權的檢查。 SMTP在.NET中對應的許可權是:SmtpPermission類型(還有聲明式的SmtpPermissionAttribute特性,他們都在System.Net.Mail命名空間下)。他的Access屬性控制許可權的內容。對應一個SmtpAccess枚舉。有3個值:None(沒有),Connect(串連預設連接埠25),ConnectToUnrestrictedPort(串連任