2012-03-30 123 views
2

我用WebForms來製作一個詞彙表(適用於N種語言),我將分享我的所有網絡應用程序。我可以爲我的所有Web應用程序共享一個類嗎?

Like MyLanguages.cs。然後,我將創建靜態方法來獲得我的話。但我不會爲我的所有應用程序,只有一個爲所有(內存中的一個,而不是N)。

你可以向我建議的最佳策略是什麼?

這應該是我的班:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 

public class Vocabulary 
{ 
    public const string HelloEnglish = "Hello"; 
    public const string HelloItalian = "Ciao"; 

    public Vocabulary() 
    { 

    } 
} 

和,到處都在我的web應用程序,我想打電話:

Vocabulary.HelloEnglish; 

沒有複製和繼承類對於每個Web應用程序來說,這總是相同的...浪費資源...也因爲它會增長...

+1

提供了一個需要存檔的例子,我們可以幫助您。 – Aliostad 2012-03-30 14:54:43

+0

不確定你的意思。但是,你不能創建一個獨立的dll,然後可以被任何需要的功能引用嗎? – 2012-03-30 14:55:23

+0

據我所知,Markzzz希望在同一臺機器上的許多應用程序之間共享一個單詞實例。 – Nikolay 2012-03-30 14:57:00

回答

0

我只是將它存儲在一個數據庫中,添加新的語言和單詞將是微不足道的,不需要重新編譯任何東西。這可以讓你在復興的同時更加充滿活力。

+0

呃...不是真的!每次我需要它是一個數據庫調用!所以最好將它們全部下載一次,並將其永久保存...... – markzzz 2012-03-30 15:02:43

3

我建議你使用資源並進行本地化。

+0

不知道你在說什麼... – markzzz 2012-03-30 15:03:34

+0

示例 - http://www.codeproject.com/Articles/5447/NET-Localization-使用-資源文件 – Nikolay 2012-03-30 15:06:01

0

爲了避免Window Service的部署問題,您可以在您的應用程序之一(第一個啓動的應用程序)中託管此詞彙表,並且所有其他應用程序都可以連接到該主機。應用程序可以通過多種方式進行互操作 - tcp,命名管道(都可以與WCF一起使用),COM等等。而且你也不用擔心彙編本身的內存,因爲Windows將在所有應用程序之間共享相同的實例,使用該程序集

0

像這樣的類將是一個混亂的長期管理。

如果你需要一個類,更好的方法是創建一個接口IVocabulary,它具有屬性'Hello'。 根據需要爲其實現儘可能多的語言。 然後你可以保留一個單獨的課。這個類可以返回IVocabulary的一個實例。您也可以使用SetVocabulary(字符串語言)方法在運行時更改語言。

public interface IVocabulary 
{ 
    string Hello { get; } 
} 

public class EnglishVocabulary : IVocabulary 
{ 
    public string Hello 
    { 
     get { return "Hello"; } 
    } 
} 

public class ItalianVocabulary : IVocabulary 
{ 
    public string Hello 
    { 
     get { return "Ciao"; } 
    } 
} 

public class CurrentVocabulary 
{ 
    private static IVocabulary instance; 

    private CurrentVocabulary() 
    { 
    } 

    public static IVocabulary Instance 
    { 
     get 
     { 
      return instance; 
     } 
    } 

    public static void SetVocabulary(string language) 
    { 
     switch (language.ToLower()) 
     { 
      case "english": 
       instance = new EnglishVocabulary(); 
       break; 
      case "italian": 
       instance = new ItalianVocabulary(); 
       break; 
      default: 
       throw new ArgumentException("Language " + language + " not available."); 
       break; 
     } 
    } 
} 

但是,到目前爲止,在數據庫中存儲語言是最好的和動態的方法。您可以使用類似的數據庫驅動解決方案模型。

相關問題