C# 你好,
我正在构建一个所有CustomControls所在的Dll(Buttons,Custom MessageBox等)。我想在多个应用程序中使用这些控件。
应用程序是多语言的。
问题是每个应用程序都有不同的翻译方式。例如,我有一个自定义按钮,按钮有一个名为KeywordText
的属性:这意味着我给他一个关键字,例如“First.Run”,按钮将其转换为“这是你第一次运行这个应用程序”。
在一个软件中,通过调用Config.Translation["First.Run"];
来翻译文本。在其他应用程序中,其处理方式不同
我的问题是,我可以在我的dll中创建一个名为'TranslateText(string text)'的方法。然后在每个程序中定义它,而不是在dll本身中定义它。例如,在1.应用程序中,我将其定义为
public string TranslateText(string text){
return Config.Translation[text];
}
在我的CustomButton中,我会将文本设置为:this.Text=TranslateText(keyword);
。
然后该按钮应该从使用该按钮的应用程序中调用方法TranslateText()。
我希望你理解我的意思:)。
答案 0 :(得分:0)
您可以做的最简单的更改是使用虚拟关键字
更改您的方法public virtual string TranslateText(string text){
return Config.Translation[text];
}
然后在转换逻辑不同的应用程序中,从dll的控件中派生一个控件,并使用不同的逻辑覆盖该方法。
或者在另一种方法中,您可以使用委托将函数作为参数从调用程序集传递给控件dll。如果您不知道函数回调是什么,请参阅What is a callback?