Hej på er! Hm, det är nog bättre om du beskriver problemet du försöker lösa, inte hur du försöker lösa problemet. Det känns som att du är på fel spår nämligen :) från ett styrsystem får jag 16-bitarsord som jag själv namnger. Ordet i sig består av olika statusbitar...så det jag vill göra är att skapa en klass som hanterar detta enlig följande: Du kan inte byta namn på en property i RunTime i C#. Med det sagt ska jag naturligtvis säga emot mig själv med att tala om att i .NET 4 kom det ett nytt keyword som heter "dynamic". Detta keyword används på samma sätt som "var" används i JavaScript dvs: Det behöver inte vara i runtime...utan bara i VS för att hjälpa mig att hålla reda på bitarna. Okej, så dina properties ska fortfarande hete Bit0 etc och du vill egentligen bara lägga till någon form av information som förtydligar för dig själv när du utvecklar vilken bit som motsvarar vilket värde? Jo...men det blir ju lika tokigt det eftersom bitarna i Word2 inte representerar samma sak som word1, så det jag vill är att vid deklarationen av varje instans av klassen också kan tala om namnet på varje bit. Ursäkta lite sen återkoppling! Jag nöjer mig med svaren jag fått så länge och accepterar att jag inte kan få som jag vill;-)Namn på properties
Går det att namnge vad en viss property ska heta vid deklareringen?
Ta följande exempelklass
class Word
{
public short Value
{
get
{
return Value;
}
set
{
Value = value;
UpdateBool();
}
}
public bool Bit0
{get; set;}
.
.
.
public bool Bit15
{get; set;}
private void UpdateBool()
{
//Maska ur bitarna från ordet...
}
}
Här skulle jag vilja byta ut namnen för Bit0...Bit15 till ett mer begripligt namn som exempelvis "HatchOpen", "IsOk"...
typ: Word w1 = new Word(short myShort, string[] PropertyNames)
Förstår ni vad jag menar??
/FredrikSv: Namn på properties
Sv:Namn på properties
Word MyWord1 = new Word()
myWord1.Value // = själva ordet
myWord1.RobotEnabled // = en statusbit i ordet som jag vill kunna namnge till just RobotEnabled och inte exempelvis Bit4
Är ni med...det kommer att finnas hundratals ord som innehåller olika statusbitar...och jag vill ju inte göra en ny klass för varje...så vad har ni för tips?
/FredrikSv: Namn på properties
Skriver du:
dynamic myWord = new Word();
myWord.RobotEnabled = 1;
Så har du skapat egenskapen "RobotEnabled" på ditt objekt. Jag antar att det var något sådant du letade efter och hoppas detta hjälper dig!
Du kan läsa mer här:
http://msdn.microsoft.com/en-us/library/dd264741.aspx
http://msdn.microsoft.com/en-us/magazine/ee336309.aspx
Eller gör en googling på "dynamic keyword C#" så får du många intressanta träffar.
Sv:Namn på properties
Klassen är tänkt att se ut som i mitt första inlägg...men det blir väldigt svårt att förstå vad exempelvist Word1.Bit0 har för betydelse...därför vore det ju fint om man kunde namnge bitarna.
Som exempel
Word1.Bit0 -> Word1.RobotEnabled
Word1.Bit1 -> Word1.MotorEnabled
.
.
.
Word1.Bit15 -> Word1.GripperReady
och så nästa ord
Word2.Bit0 -> Word2.OrderReady
osv...
Hoppas det är begripligt nu iaf...
/FredrikSv: Namn på properties
I så fall kan du ovan för varje property i din Word-klass skriva 3st /-tecken, då kommer VS att generera en summary-kommentar som sedan blir synlig i intelliesense när du jobbar med dina objekt.
Det borde se ut så här:
public class Word
{
///<summary>
/// This bit represents OrderReady
/// </summary>
public int Bit0 {get; set;}
}
Texten "This bit represents OrderReady" kommer då att synas i intelliesense.
Hoppas detta var det du sökte :)
Sv:Namn på properties
Detta kanske inte alls är möjligt...och då får jag leva med att bitarna i ordet får statiska namn.
/Fredrik Sv: Namn på properties
Nej du blir det lite svårt att lösa det, om du inte vill lösa det genom att skapa basklasser som håller gemensamma properties sedan definera det som skiljer sig mellan de olika typerna i subklasser. Det beror helt på hur du vill lösa det. Hojta till om du är sugen på att lösa det genom arv och basklasser så kan jag säkert hjälpa till och styra dig i rätt riktning!Sv:Namn på properties
Tack för hjälpen!!
/Fredrik