Dll用于多种应用但不同的方法

时间:2017-04-11 12:31:14

标签: c# dll interface abstract

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()。

我希望你理解我的意思:)。

1 个答案:

答案 0 :(得分:0)

您可以做的最简单的更改是使用虚拟关键字

更改您的方法
public virtual string TranslateText(string text){
   return Config.Translation[text];
}

然后在转换逻辑不同的应用程序中,从dll的控件中派生一个控件,并使用不同的逻辑覆盖该方法。

或者在另一种方法中,您可以使用委托将函数作为参数从调用程序集传递给控件dll。如果您不知道函数回调是什么,请参阅What is a callback?