我有CParam的詞典與註冊爲重點,變量名字符串
CParam具有從外部文本文件中讀取並說明作爲一個關鍵的HumanDesc讀一個字段。
文本文件是一個翻譯文件,描述必須是一個字符串。 像這樣
PLACE_HOLDER1 "First Place where things are put"
PLACE_HOLDER2 "Secod Place where things are put"
.....
我可以很容易地通過將註冊成爲和把它放在引號做到這一點。但有一個100註冊,這將是乏味的(而不是非常優雅)。 有沒有一種方法,構造函數可以爲我處理。
下面是什麼我是個嘗試做一個很簡單的例子:
using System;
using System.Collections.Generic;
namespace Var2String
{
public class CParam
{
public ushort Register;
public string Description;
public ushort Content;
public string HumanDesc;
public CParam(ushort t_Register, string t_Description, string t_HumanDesc, ushort DefaultVal)
{
Register = t_Register;
Description = t_Description;
Content = DefaultVal;
HumanDesc = t_HumanDesc;
}
};
static class Device1
{
public const ushort PLACE_HOLDER1 = 0x0123;
public const ushort PLACE_HOLDER2 = 0x0125;
public const ushort PLACE_HOLDER_SAME_AS_1 = 0x0123;
public static Dictionary<ushort, CParam> Registers;
static Device1()
{
Registers = new Dictionary<ushort, CParam>()
{
{PLACE_HOLDER1, new CParam(PLACE_HOLDER1,"PLACE_HOLDER1","Place One Holder",100)},
{PLACE_HOLDER2, new CParam(PLACE_HOLDER1,"PLACE_HOLDER2","Place Two Holder",200)}
};
/*
* Like to be able to do this
* And constructor CParam
Registers = new Dictionary<ushort, CParam>()
{
{PLACE_HOLDER1, new CParam(PLACE_HOLDER1,"Place One Holder",100)},
{PLACE_HOLDER2, new CParam(PLACE_HOLDER1,"Place Two Holder",200)}
};
*/
}
}
class Program
{
static private string LookUpTranslationFor(string Key)
{
string Translated = "Could not find Val for " + Key;
//This would read XML file use Key to get translation
return Translated;
}
static void Main(string[] args)
{
Console.WriteLine(Device1.Registers[Device1.PLACE_HOLDER1].HumanDesc);
Console.WriteLine(Device1.Registers[Device1.PLACE_HOLDER2].HumanDesc);
Device1.Registers[Device1.PLACE_HOLDER2].HumanDesc = LookUpTranslationFor(Device1.Registers[Device1.PLACE_HOLDER2].Description);
Console.WriteLine(Device1.Registers[Device1.PLACE_HOLDER2].HumanDesc);
Console.ReadKey(true);
}
}
}
是的,這將做到這一點。我在進入Exression之前,正試圖避免使用Linq也PLACE_HOLDERS1無法更改。但是否則這是行得通的,如果我找不到其他解決方案,我會使用它。 –
您只能使PLACE_HOLDER1只讀,所以沒有人可以更改它。 – HoberMellow
我無法在case語句中使用readonly,並且在現有代碼中的很多地方使用case。 –