c# - 如何将 "send"方法转到另一个方法中?

标签 c#

我有以下内容:

public class Mail {
  public String Obfuscate(String email) {
    return email.Replace("@", "at").Replace(".", "dot");
  }
}

我在一个类中调用方法Obfuscate,如下:

public class Resolver {
  public Data GetData () {
    return new Data { Email = new Mail().Obfuscate(myEmail) };
  }
  public String Translate(string value) { /* Some Code */ }
}

问题是 Obfuscate 用英语进行替换:@ > at, 。 > 点

但是在 Resolver 类中,Translate 方法完全满足了我的需要...

我怎样才能将 Translate 方法“传递”给 Obfuscate 方法,以便这个方法使用它来翻译 @ 和 .到当前语言的 at 和 dot?

Obfuscate 中的代码行:

return email.Replace("@", "at").Replace(".", "dot");

会变成:

return email.Replace("@", Translate("@")).Replace(".", Translate("."));

Translate 是我“传递”给它的方法。

比起你, 米格尔

最佳答案

考虑不同的设计:

public interface ITranslator
{
    string Translate(string s);
}

public class Obfuscator
{
    public Obfuscator(ITranslator translator)
    {
        this.translator = translator;
    }

    public string Obfuscate(string email)
    {
       var at = translator.Translate("at");
       var dot = translator.Translate("dot");

       return email.Replace("@", at).Replace(".", dot);
    }

    private ITranslator translator;
}

public class EnglishTranslator : ITranslator
{
    public string Translate(string s)
    {
        return s;
    }
}

public class PolishTranslator : ITranslator
{
    public PolishTranslator() //or `FileInfo dictionaryFile` parameter perhaps
    {
        // for simplicity
        translations = new Dictionary<string, string>();
        translations.Add("at", "malpa");
        translations.Add("dot", "kropka");
    }

    public string Translate(string s)
    {
        return translations[s];
    }

    private Dictionary<string, string> translations;
}

但是你真的应该考虑使用 ResourceManager .资源相关机制旨在处理翻译。

关于c# - 如何将 "send"方法转到另一个方法中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19478348/

相关文章:

c# - 您需要在析构函数中删除事件处理程序吗?

c# - sqlite.net 表 where 子表上的条件

c# - 在 C# .NET 应用程序的整个生命周期中使用 DecisionTree

c# - 继承自列表<T>

c# - 为什么无法在 Windows 7 64 位中从 mdb 文件检索数据?

c# - 使用 C# EF Core 返回具有空子级的父级。包括

c# - 将属性绑定(bind)到 itemssource 集合的属性

c# - 如何在 C# 中将 IPv4 地址转换为整数?

c# - 图像拉直算法

c# - 在代码隐藏中动态更改 XAML 样式,以便应用该样式的控件也反射(reflect)更改