有的時候我們在寫程式時,可能在Debug,會需要使用某一段程式。
而這段程式在Release時,我們又不需要了。
比較傳統的作法就是使用人工去把該程式給註解或反註解來完成。
現在我們可以使用前置處理器指示詞來達成,
「前置處理器指示詞」用比較白話的方式來講,就是程式中的程式。
有的時候我們在寫程式時,可能在Debug,會需要使用某一段程式。
而這段程式在Release時,我們又不需要了。
比較傳統的作法就是使用人工去把該程式給註解或反註解來完成。
現在我們可以使用前置處理器指示詞來達成,
「前置處理器指示詞」用比較白話的方式來講,就是程式中的程式。
SHA加密有很多種版本,像是SHA1、SHA256....等
下面用一個Function來實作.NET中所有的SHA加密
using System;
using System.Security.Cryptography;
using System.Text;
namespace SystemAPI.Function.EncryptLibrary
{
public class EncryptSHA
{
/// <summary>
/// 使用SHA加密訊息
/// </summary>
/// <param name="sourceMessage">原始資訊</param>
/// <param name="SHAType">SHA加密方式</param>
/// <returns>string</returns>
public string Encrypt(string sourceMessage, EnumSHAType SHAType)
{
if (string.IsNullOrEmpty(sourceMessage))
{
return string.Empty;
}
//字串先轉成byte[]
byte[] Message = Encoding.Unicode.GetBytes(sourceMessage);
HashAlgorithm HashImplement = null;
//選擇要使用的SHA加密方式
switch (SHAType)
{
case EnumSHAType.SHA1:
HashImplement = new SHA1Managed();
break;
case EnumSHAType.SHA256:
HashImplement = new SHA256Managed();
break;
case EnumSHAType.SHA384:
HashImplement = new SHA384Managed();
break;
case EnumSHAType.SHA512:
HashImplement = new SHA512Managed();
break;
}
//取Hash值
byte[] HashValue = HashImplement.ComputeHash(Message);
//把byte[]轉成string後,再回傳
return BitConverter.ToString(HashValue).Replace("-","").ToLower();
}
public enum EnumSHAType
{
SHA1,
SHA256,
SHA384,
SHA512
}
}
}
.
使用方式如下:
EncryptSHA SHA = new EncryptSHA();
string EncryptString = SHA.Encrypt("12345", EncryptSHA.EnumSHAType.SHA512);
這幾天無意間發現Oracle官方也支援Linq to Oracle了
雖然還是測試版,不過至少踏出了第一步了吶
下載的名稱為:
32-bit Oracle Data Access Components (ODAC)
for Microsoft Entity Framework and LINQ to Entities
想嘗鮮的朋友可以先玩看看
參考資料:
Tutorial. Entity Framework, LINQ and Model-First for the Oracle Database
繼承建構子(Constructor),這看起來既有學問又深奧的文字
不要怕,以下我用白話文解釋一下
把繼承建構子分解後,就是 繼承 + 建構子
繼承,相信有物件導向概念的朋友應該都知道這2個字的意思
建構子(Constructor),就是用來進行物件初始化的方法
一般來說,Class B 繼承 Class A 之後就可以使用Class A所開放出來的東西
那麼如果Class B 繼承 Class A後,想要對Class A進行初始化的動作,那就需要使用繼承建構子了
先來看看程式吧,看程式就比較不會那麼文謅謅了。程式碼可於這邊下載(C#、VB.NET雙版本)
首先有一個最基本的Class,我們叫它Class A
C#版本Class A
class ClassA
{
public ClassA()
{
_InitString = "123";
}
public ClassA(string initStr)
{
_InitString = initStr;
}
private string _InitString;
public string InitString
{
get { return _InitString; }
}
public void ShowClassAInit()
{
Console.WriteLine(InitString);
Console.WriteLine("-----------------------------");
}
}
VB.NET版本Class A
Class ClassA
Public Sub New()
_InitString = "123"
End Sub
Public Sub New(ByVal initStr As String)
_InitString = initStr
End Sub
Private _InitString As String
Public ReadOnly Property InitString() As String
Get
Return _InitString
End Get
End Property
Public Sub ShowClassAInit()
Console.WriteLine(InitString)
Console.WriteLine("-----------------------------")
End Sub
End Class
接下來我們需要Class B來繼承Class A
注意到了嗎,繼承建構子的實作方式就是於Class B加入一個與Class A一樣的初始建構子
並使用base(C#語法)、MyBase.New(VB.NET語法)把初始值帶入Class A。成功於Class B內,進行初始化Class A的動作
C#版本Class B
class ClassB : ClassA
{
public ClassB()
{
}
public ClassB(string initStr)
: base(initStr)
{
}
}
VB.NET版本Class B
Class ClassB Inherits ClassA Public Sub New() End Sub Public Sub New(ByVal initStr As String) MyBase.New(initStr) End Sub End Class
接下來就看看怎麼使用,跟使用的結果吧
下面使用Console來DemoC#版本Console
class Program
{
static void Main(string[] args)
{
ClassA CA1 = new ClassA();
Console.WriteLine("new ClassA()");
CA1.ShowClassAInit(); //Result:123
ClassA CA2 = new ClassA("Init AAA");
Console.WriteLine("new ClassA(\"Init AAA\")");
CA2.ShowClassAInit(); //Result:Init AAA
ClassB CB1 = new ClassB();
Console.WriteLine("new ClassB()");
CB1.ShowClassAInit(); //Result:123
ClassB CB2 = new ClassB("Init BBB");
Console.WriteLine("new ClassB(\"Init BBB\")");
CB2.ShowClassAInit(); //Result:Init BBB
Console.ReadLine();
}
}
VB.NET版本Console
Module Module1
Sub Main()
Dim CA1 As New ClassA()
Console.WriteLine("new ClassA()")
CA1.ShowClassAInit() 'Result:123
Dim CA2 As New ClassA("Init AAA")
Console.WriteLine("new ClassA(""Init AAA"")")
CA2.ShowClassAInit() 'Result:Init AAA
Dim CB1 As New ClassB
Console.WriteLine("new ClassB()")
CB1.ShowClassAInit() 'Result:123
Dim CB2 As New ClassB("Init BBB")
Console.WriteLine("new ClassB(""Init BBB"")")
CB2.ShowClassAInit() 'Result:Init BBB
Console.ReadLine()
End Sub
End Module
以上程式碼可於這邊下載(C#、VB.NET雙版本)