是否可以从另一个项目向类添加方法?
我有一个班级:
namespace ProjectLibrary
{
public class ClassA
{
// some methods
}
}
我想添加一个方法来保存我的对象在文件中,但我不想在我的项目ProjectLibrary
中添加此方法,因为我不想添加对System.IO的引用(I想把这个项目用于Android应用程序和PC应用程序。)
是否有可能添加仅在另一个项目中可用的方法SaveToFile()
?或者在ClassA中创建一个抽象方法,但在其他项目中定义它。
像这样:
using ProjectLibrary;
namespace ProjectOnPC
{
void methodExample()
{
ClassA obj = new ClassA();
// do sommething
obj.SaveToFile();// => available only in namespace ProjectOnPC
}
}
感谢您的帮助
答案 0 :(得分:3)
您可以使用扩展方法。
示例:
namespace ProjectOnPC
{
public static void SaveToFile(this Class myClass)
{
//Save to file.
}
}
答案 1 :(得分:2)
您正在寻找的东西称为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");
}
答案 2 :(得分: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