【问题标题】:Dll used in multiple Applications but different methodsDLL用于多个应用程序但不同的方法
【发布时间】:2017-09-06 20:16:58
【问题描述】:

C# 你好,

我正在构建一个 Dll,我的所有自定义控件都位于其中(按钮、自定义消息框等)。我想在多个应用程序中使用这些控件。 应用程序是多语言的。 问题是每个应用程序都有不同的方式来翻译文本。例如,我有一个自定义按钮,该按钮有一个名为KeywordText 的属性:这意味着我给他一个关键字,例如“First.Run”,该按钮将其翻译为“这是您第一次运行此应用程序”。 在一个软件中,通过调用Config.Translation["First.Run"]; 翻译文本。在其他应用程序中,它的处理方式不同。

我的问题是,我可以在我的 dll 中创建一个名为“TranslateText(string text)”的方法吗?然后在每个程序中定义它,而不是在 dll 本身中。例如在 1. Application 我会定义它 public string TranslateText(string text){ return Config.Translation[text]; }

在我的 CustomButton 中,我会设置如下文本:this.Text=TranslateText(keyword);。 然后,该按钮应从使用该按钮的应用程序中调用 TranslateText() 方法。

希望你明白我的意思:)

【问题讨论】:

  • 是的,这是可能的!
  • 如何?我用接口和抽象类尝试过,但都没有成功,你能给我发个链接或解释一下吗?

标签: c# dll interface abstract


【解决方案1】:

你能做的最简单的改变就是用 virtual 关键字改变你的方法

public virtual string TranslateText(string text){
   return Config.Translation[text];
}

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

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

【讨论】:

  • 好的,谢谢你的回答,我去看看:)
  • 是的,我使用一个静态对象,它是由一个只有虚拟方法的 lass 创建的。在我的应用程序开始时,我覆盖了该对象的方法。
猜你喜欢
  • 2015-02-03
  • 2017-10-15
  • 1970-01-01
  • 2012-01-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-21
相关资源
最近更新 更多