2016-11-25 66 views
1

是否可以將方法從另一個項目添加到類中?將方法添加到另一個項目的類中

我有一個類:

namespace ProjectLibrary 
{ 
    public class ClassA 
    { 
     // some methods 
    } 
} 

我想添加一個方法來保存我的對象在一個文件中,但我不希望在我的項目ProjectLibrary添加此方法,因爲我不想讓添加對System.IO的引用(我想將此項目用於android應用程序和PC應用程序)。

是否有可能添加方法SaveToFile()只能在另一個項目中使用?或者在ClassA中創建一個抽象方法,但在其他項目中定義它。

像這樣:

using ProjectLibrary; 
namespace ProjectOnPC 
{ 
    void methodExample() 
    { 
     ClassA obj = new ClassA(); 
     // do sommething 
     obj.SaveToFile();// => available only in namespace ProjectOnPC 
    } 
} 

謝謝大家幫忙

+0

你可能有bennefits與條件編譯 –

+1

看看擴展方法。 – Carra

+1

擴展方法或繼承類可能嗎? –

回答

1

事情您正在尋找被稱爲Extension method

代碼基類:

namespace ProjectLibrary 
{ 
    public ClassA 
    { 
     // some methods 
    } 
} 

擴展方法:

using ProjectLibrary; 
namespace ProjectOnPC 
{ 
    void SaveToFile(this ClassA Obj, string Path) 
    { 
     //Implementation of saving Obj to Path 
    } 
} 

在你的程序中調用:

using ProjectLibrary; 
using ProjectOnPc; //if You won't include this, You cannot use ext. method 

public void Main(string[] args) 
{ 
    ClassA mObj = new ClassA(); 
    mObj.SaveToFile("c:\\MyFile.xml"); 
} 
+0

Didn,不知道,謝謝你的回答和文件。 –

3

您可以使用擴展方法。

例子:

namespace ProjectOnPC 
{ 
    public static void SaveToFile(this Class myClass) 
    { 
     //Save to file. 
    } 
} 
+0

你錯過了類聲明。 –

1

您可以創建用於此目的的擴展方法

下面是一個例子。
在你ProjectOnPc命名空間創建一個類是這樣的:

public static class ClassAExtension 
{ 
    public static void SaveToFile(this ClassA obj) 
    { 
     // write your saving logic here. 
     // obj will represent your current instance of ClassA on which you're invoking the method. 
     SaveObject(obj). 
    } 
} 

您可以瞭解更多關於此擴展方法:
https://msdn.microsoft.com/en-us//library/bb383977.aspx

相關問題