2016-11-25 37 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

相关问题