将方法添加到另一个项目的 class
Add method to a class from another project
是否可以从另一个项目向 class 添加方法?
我有一个 class:
namespace ProjectLibrary
{
public class ClassA
{
// some methods
}
}
我想添加一个方法来将我的对象保存在一个文件中,但是我不想在我的项目中添加这个方法ProjectLibrary
因为我不想添加对[=27的引用=](我想将此项目用于 android 应用程序和 PC 应用程序)。
是否可以添加一个方法 SaveToFile()
只能在另一个项目中使用?或者在ClassA中创建一个抽象方法,但在其他项目中定义它。
像这样:
using ProjectLibrary;
namespace ProjectOnPC
{
void methodExample()
{
ClassA obj = new ClassA();
// do something
obj.SaveToFile();// => available only in namespace ProjectOnPC
}
}
感谢您的帮助
您可以使用扩展方法。
示例:
namespace ProjectOnPC
{
public static void SaveToFile(this Class myClass)
{
//Save to file.
}
}
您要找的东西叫做 Extension method
:
- DotNetPerls
- MSDN link
- What are Extension Methods?
基础代码 class:
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");
}
您可以为此创建一个扩展方法。
这是一个例子。
在您的 ProjectOnPc 命名空间中创建一个 class,如下所示:
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
是否可以从另一个项目向 class 添加方法?
我有一个 class:
namespace ProjectLibrary
{
public class ClassA
{
// some methods
}
}
我想添加一个方法来将我的对象保存在一个文件中,但是我不想在我的项目中添加这个方法ProjectLibrary
因为我不想添加对[=27的引用=](我想将此项目用于 android 应用程序和 PC 应用程序)。
是否可以添加一个方法 SaveToFile()
只能在另一个项目中使用?或者在ClassA中创建一个抽象方法,但在其他项目中定义它。
像这样:
using ProjectLibrary;
namespace ProjectOnPC
{
void methodExample()
{
ClassA obj = new ClassA();
// do something
obj.SaveToFile();// => available only in namespace ProjectOnPC
}
}
感谢您的帮助
您可以使用扩展方法。
示例:
namespace ProjectOnPC
{
public static void SaveToFile(this Class myClass)
{
//Save to file.
}
}
您要找的东西叫做 Extension method
:
- DotNetPerls
- MSDN link
- What are Extension Methods?
基础代码 class:
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");
}
您可以为此创建一个扩展方法。
这是一个例子。
在您的 ProjectOnPc 命名空间中创建一个 class,如下所示:
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