[英]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.