我想要在类之间传输一些扩展函数。
我有一个名为 Helpers.cs 的课程,我希望有以下内容:
namespace XYZ
{
public class Helpers
{
public static string Encrypt(this string plainText){
//... do encrypting
}
}
}
在我的其他班级 Impliment.cs 中,我希望有以下内容:
string s = "attack";
s.Encrypt();
我该如何实现?
答案 0 :(得分:2)
您还需要制作class
,static
并使用using
声明。
示例强>
FileA.cs
:
namespace XYZ {
public static class Helpers {
public static string Encrypt(this string plainText){
//... do encrypting
return plainText;
}
}
}
FileB.cs
:
using XYZ;
public class MainClass {
public static void Main() {
string s = "input";
s = s.Encrypt();
Console.WriteLine(s);
}
}
答案 1 :(得分:2)
你很接近 - 扩展方法需要在静态类中:
public static class Helpers
{
public static string Encrypt(this string plainText){
//... do encrypting
}
}
如果你尝试了你发布的内容,你会得到一个非常清晰的编译错误,它基本上都是一样的:
扩展方法必须在非泛型静态类中定义
请注意,您的使用略微与您想要的不同。你做不到:
string s = "attack";
s.Encrypt();
因为字符串是不可变的。您可以做的最好是覆盖现有的varialbe或将结果存储在新的变量中:
string s = "attack";
s = s.Encrypt(); // overwrite
或
string s = "attack";
string s2 = s.Encrypt(); // new variable
答案 2 :(得分:1)
要创建Extension Method
,class
必须为static
,但通常必须遵守以下规则:
public
和static
public
和static
this
关键字作为第一个参数
在您的情况下,将类更改为static
,样本:
public static class Helpers
{
public static string Encrypt(this string plainText)
{
//... do encrypting
// return a string;
}
}
我还想创建名为Type和Extensions
sufix的类,例如:StringExtensions.cs
,DateTimeExtensions.cs
等。
Obs:记住它不是一个类型方法,它只是一个静态方法,但你用作一个类型的方法。