程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 教你在IronPython中使用C#擴展方法

教你在IronPython中使用C#擴展方法

編輯:關於C#

在現在的開發過程中為了減少單個文件的代碼量,降低協同開發時文件被獨占鎖定的幾率,我們經常會使用擴展方法。擴展方法使您能夠向現有類型“添加”方法,而無需創建新的派生類型、重新編譯或以其他方式修改原始類型。擴展方法是一種特殊的靜態方法,但可以像擴展類型上的實例方法一樣進行調用。

隨著DLR的廣泛使用,面臨越來越多需要C#代碼和腳本語言交互的需求。(如果你知道如何使用,建議去DLR的官方網站去看看)但是,對於擴展方法來說如果直接使用會有發現DLR無法查找到指定的方法。

Foo方法是一個擴展方法,雖然你可以不經雕琢的使用import方法導入你的DLL和類型定義,但是DLR引擎無法識別Foo方法,會引發AttributeError錯誤。為了解決這個問題,需要使用 Microsoft.Scripting.Runtime.ExtensionType擴展標識。

1[AttributeUsage(AttributeTargets.Assembly, Inherited=false, AllowMultiple=true)]
2public sealed class ExtensionTypeAttribute : Attribute
3{
4    // Fields
5    private readonly Type _extends;
6    private readonly Type _extensionType;
7
8    // Methods
9    public ExtensionTypeAttribute(Type extends, Type extensionType)
10    {
11        if (extends == null)
12        {
13            throw new ArgumentNullException("extends");
14        }
15        if (((extensionType != null) && !extensionType.IsPublic) && !extensionType.IsNestedPublic)
16        {
17            throw Error.ExtensionMustBePublic(extensionType.FullName);
18        }
19        this._extends = extends;
20        this._extensionType = extensionType;
21    }
22
23    // Properties
24    public Type Extends
25    {
26        get
27        {
28            return this._extends;
29        }
30    }
31
32    public Type ExtensionType
33    {
34        get
35        {
36            return this._extensionType;
37        }
38    }
39}
40
41
42

構造器 第一個參數是你擴展的目標類型,第二個參數是實現擴展方法的類。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved