En utilisant C#, j'ai une classe statique qui a une liste statique d'un type personnalisé. Voici le type personnalisé:C# Comment accéder à la classe statique List <> d'une autre classe
public class LanguageItem
{
public Word.WdLanguageID Id { get; set; }
public string Name { get; set; }
public LanguageItem(string name, int id)
{
Id = (Word.WdLanguageID)id;
Name = name;
}
}
Et voici la classe statique qui utilise ce type:
public static class LanguageList
{
public static List<LanguageItem> _languageList;
static LanguageList()
{
_languageList.Add(new LanguageItem("Arabic", 1025));
_languageList.Add(new LanguageItem("Bulgarian", 1026));
_languageList.Add(new LanguageItem("Catalan", 1027));
_languageList.Add(new LanguageItem("TraditionalChinese", 1028));
_languageList.Add(new LanguageItem("Czech", 1029));
_languageList.Add(new LanguageItem("Danish", 1030));
_languageList.Add(new LanguageItem("German", 1031));
_languageList.Add(new LanguageItem("Greek", 1032));
_languageList.Add(new LanguageItem("EnglishUS", 1033));
_languageList.Add(new LanguageItem("Spanish", 1034));
_languageList.Add(new LanguageItem("Finnish", 1035));
_languageList.Add(new LanguageItem("French", 1036));
_languageList.Add(new LanguageItem("Hebrew", 1037));
_languageList.Add(new LanguageItem("Hungarian", 1038));
_languageList.Add(new LanguageItem("Icelandic", 1039));
_languageList.Add(new LanguageItem("Italian", 1040));
_languageList.Add(new LanguageItem("Japanese", 1041));
_languageList.Add(new LanguageItem("Korean", 1042));
_languageList.Add(new LanguageItem("Dutch", 1043));
}
public static List<LanguageItem> LanguageListItems
{
get
{
return _languageList;
}
private set
{
_languageList = value;
}
}
}
Ce que je suis en train de faire est d'utiliser cette liste d'une autre classe, de retourner le la éléments de la liste. Je veux spécifier le Name
et je veux récupérer le Id
.
J'ai essayé d'utiliser:
using Word = Microsoft.Office.Interop.Word;
Word.Application oWord = new Word.Application();
oWord.Selection.LanguageID = LanguageList.Single(lang => lang.Name == strTgtLanguage).Id;
Mais je reçois une erreur de compilation qui lit:
'languageList' ne contient pas de définition pour 'unique'
J'ai essayé de regarder d'autres articles similaires, tels que How to access all specific versions of a generic static class in C#? et How to access member of a static class which is inside another static class et d'autres, mais je ne peux pas le comprendre sur la base de ceux-ci.
La raison pour laquelle j'utilise une énumération codée en dur, car si j'utilise l'objet COM Office.Interop.Word
, il faut toujours (plus de 2 minutes) pour ajouter tous les 250+ éléments à la liste. Quelqu'un peut-il m'aider à faire remarquer ce que je fais de mal et pourquoi ne puis-je pas accéder à la liste, ou s'il y a une meilleure approche? Merci d'avance.
Je suis vraiment curieux de voir comment ce code peut compiler lorsque votre classe statique hérite autre chose que 'object'. Il doit y avoir quelque chose qui me passe par la tête. –
Bon point, mon mauvais, j'ai oublié de mettre à jour cela aussi. J'ai corrigé toutes les erreurs du compilateur, dont la plupart n'apparaissaient qu'au moment de la compilation. J'ai juste oublié de le mettre à jour ici. – ib11
Tout va bien. Je l'ai vu et était tellement confus lol. –