為什麼需要這個功能?
這個功能,主要是解決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();
}