从另一个项目向类添加方法

时间:2016-11-25 10:14:36

标签: c# extension-methods

是否可以从另一个项目向类添加方法?

我有一个班级:

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
    }
}

感谢您的帮助

3 个答案:

答案 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

相关问题