天天看點

.NET Framework 4新特性之 Type Equivalence(等價類型)

為什麼需要這個功能?

這個功能,主要是解決COM interop的問題的。舉個最常見的例子,如果我們需要在.NET程式裡面調用Office元件,以前的情況是(以Excel為例)

這裡的最大問題就是,如何確定開發環境與實際使用環境的Office版本一樣。事實上,你無法確定這一點。

等價類型的意思就是,将目前程式中所用到的有限的那些COM類型,導入到目前程式集中,并且生成等價的.NET類型,如此一來,就可以不再依賴PIA,而可以友善地部署了。

如何使用該功能?

使用該功能其實很簡單。你可能在不知不覺中已經在使用了。

 3. 編寫如下代碼

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

using Microsoft.Office.Interop.Excel;


namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {

            var app = new Application();

            app.Visible = true;

            Console.Read();
        }
    }


}      

我們這裡實作的功能很簡單,隻是啟動了一個Excel的執行個體而已。

4. 運作調試

一個新的Excel程式視窗被打開了。

那麼,究竟發生了什麼呢?既然說是等價類型,會将我們用到的COM類型導入,如何了解呢?​

我們看到,在程式集裡面,實際上多出來一個特殊的命名空間(Microsoft.Office.Interop.Excel),然後它下面隻包含目前我們的代碼所必須通路的那些類型(實際上是導入過的),從這一點上看,Visual Studio是一個很智能的工具。

private static void Main(string[] args)
{
    Application application = (Application)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid("00024500-0000-0000-C000-000000000046")));
    application.Visible = true;
    Console.Read();
}