2017-04-11 3 views
1

がC# こんにちは、複数のアプリケーションで使用されるが、異なる方法。これらのコントロールを複数のアプリケーションで使用したいと思います。 アプリケーションは多言語対応です。 問題は、各アプリケーションが異なる方法でテキストを翻訳することです。例えば、私はカスタムボタンを持っています、ボタンはKeywordTextと呼ばれるプロパティを持っています:つまり、私は彼に "First.Run"というキーワードを与え、ボタンは "これはこのアプリケーションを初めて実行する"です。 1つのソフトウェアでは、Config.Translation["First.Run"];を呼び出してテキストを翻訳します。他のアプリケーションでは、その処理が異なります。DLLが、私はすべての私のCustomControlsは(ボタンなどのカスタムメッセージボックス)に配置されているDLLを構築しています、</p> <p>を

私の質問は、TranslateText(文字列テキスト)と呼ばれるDLLでメソッドを作成できますか?そして、それをdll自体ではなく、各プログラムで定義します。例えば1.アプリケーションで私はそれを定義するでしょう public string TranslateText(string text){ return Config.Translation[text]; }

私のカスタムボタンでは、私はthis.Text=TranslateText(keyword);のようなテキストを設定します。 ボタンは、ボタンが中で使用されているアプリケーションからの方法TranslateText()を呼び出す必要があります。

を、私はあなたが私が何を意味するか理解してほしい、あなたが行うことができます:)

+0

はい、それが可能です。 –

+0

とは?私はインターフェイスと抽象クラスで試してみましたが、どちらもうまくいきませんでした。私にリンクを送ったり説明したりできますか? –

答えて

0

最も簡単な変更は、仮想キーワード

であなたの方法を変更で
public virtual string TranslateText(string text){ 
    return Config.Translation[text]; 
} 

そして、変換ロジックが異なるアプリケーションでは、あなたのDLLのコントロールからコントロールを導出し、異なるロジックでメソッドをオーバーライドします。

または、別のアプローチでは、代理人を使用して、呼び出しアセンブリからパラメータとして関数をコントロールdllに渡すことができます。関数コールバックがわからない場合は、What is a callback?

+0

あなたの答えをありがとう、私はそれを見てみましょう:) –

+0

幸運!この問題を解決する希望。 –

+0

@FabianBurgmann、あなたの問題を解決できますか? –

関連する問題

 関連する問題