[英]How do I use an extension function in another class? C#
我有几个扩展函数,我想在类之间转移。
我有一个名为Helpers.cs的类,我想要以下内容:
namespace XYZ
{
public class Helpers
{
public static string Encrypt(this string plainText){
//... do encrypting
}
}
}
在我的其他课程Impliment.cs中,我想要以下内容:
string s = "attack";
s.Encrypt();
我该如何实施?
您很接近-扩展方法必须在静态类中:
public static class Helpers
{
public static string Encrypt(this string plainText){
//... do encrypting
}
}
如果您尝试了发布的内容,则会得到一个非常清晰的编译器错误,该错误基本上是相同的:
扩展方法必须在非通用静态类中定义
请注意,您的用法将与您想要的有所不同。 您不能:
string s = "attack";
s.Encrypt();
因为字符串是不可变的。 最好的办法是覆盖现有的变量或将结果存储在新变量中:
string s = "attack";
s = s.Encrypt(); // overwrite
要么
string s = "attack";
string s2 = s.Encrypt(); // new variable
您还需要使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);
}
}
要创建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:请记住,它不是类型方法,它只是静态方法,但是您可以将其用作类型的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.