首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

Visual C# 2010 新特性:命名/可選參數與類型等價支援(三)

     編輯:關於C語言

類型等價支援 實作步驟

類型等價允許應用程式在不重新編譯的情況下,使用多版本強命名組件中的嵌入介面類型。適用於 COM 互通 (如 Office 自動化) 與純 .NET 方案。

1. 建立強命名介面組件

[ComImport]
[Guid("8DA56996-A151-4136-B474-32784559F6DF")]
public interface ISampleInterface
{
    void GetUserInput();
    string UserInput { get; }
}

2. 建立實作類別組件 (強命名,參考介面組件)


public class SampleClass : ISampleInterface
{
    private string p_UserInput;
    public string UserInput { get { return p_UserInput; } }

    public void GetUserInput()
    {
        Console.WriteLine("Please enter a value:");
        p_UserInput = Console.ReadLine();
    }
}

3. 用戶端動態載入並呼叫 (反射)


class Program
{
    static void Main(string[] args)
    {
        Assembly sampleAssembly = Assembly.Load("TypeEquivalenceRuntime");
        ISampleInterface sampleClass = (ISampleInterface)sampleAssembly.CreateInstance("TypeEquivalenceRuntime.SampleClass");
        sampleClass.GetUserInput();
        Console.WriteLine(sampleClass.UserInput);
        Console.WriteLine(sampleAssembly.GetName().Version.ToString());
        Console.ReadLine();
    }
}

4. 更新實作組件 (新增方法、升版至 2.0.0.0)


public DateTime GetDate() { return DateTime.Now; }

5. 直接替換 DLL,用戶端無需重新編譯即可執行新版本

輸出將顯示新版本號,驗證類型等價生效。

優勢與適用場景

  • COM 互通:Office 不同版本間的 API 差異,嵌入介面類型讓單一建置支援多版本 Office。
  • 純 .NET:雖然 .NET 組件自動偵測版本更新,但類型等價提供更鬆散的耦合,適合外掛架構。
  • 部署簡化:無需部署龐大的 PIA (Primary Interop Assemblies),編譯器僅嵌入實際使用的類型資訊 (No PIA)。

嵌入類型條件

  1. 組件公開至少一個介面。
  2. 介面標註 [ComImport] 與 [Guid]。
  3. 組件標註 [ImportedFromTypeLib] 與組件層級 [Guid]。
  4. 專案屬性 Embed Interop Types = true (預設) 或使用 /link 編譯選項。

總結

C# 4.0 引入 dynamic、命名/可選參數、類型等價,大幅簡化 COM 互通與動態語言整合,提升開發產能。這也反映微軟持續強化 Office 生態系整合與動態程式設計能力的策略方向。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved