Hej Johan, mmm, det låter troligt, det intressanta är att i VB.Net exemplet används inte Sys.GetString... de kanske skulle revidera sin egna exempel i sina guidelines. Folk blir ju konfunderade om inte exemplena fungerar... söker man på sys.getstring så verkar det finnas i java så det kanske är någon sunkig översättning? mm, hittade nånting från j++ *yuck* Lite "pinsamt" det hade varit för MS då ;) Och det stämmer att det finns i Java =P Sys.GetString är egentligen inte rellevant i exemplet, det är bara exempel kod som MS använder. Nä, det är klart att det inte spelar nån roll för just det exemplet, men min poäng är att exemplet är ett dåligt exempel eftersom du inte kan köra det. VB.Net exemplet fungerar ju...Sys.GetString?
Sitter och tittar lite på MS "Design guidelines for Class Library" och i kapitlet "Class member Usage Guidelines" och sektionen "Parameter Usage Guidelines" http://msdn.microsoft.com/library/en-us/cpgenref/html/cpconParameterUsageGuidelines.asp?frame=true använder de Sys.GetString i ett exempel. Jag har aldrig sett detta innan? Finns klassen Sys? I så fall var? och om den inte finns vad menar de egentligen?
Exempel på kod i deras kodexempel
public void Select(int start, int end)
{
// Check for valid parameter.
if (start < 0)
throw new ArgumentException(
Sys.GetString("InvalidArgument","start",start.ToString()));
// Check for valid parameter.
if (end < start)
throw new ArgumentException(
Sys.GetString("InvalidArgument","end",end.ToString()));
}
Sv: Sys.GetString?
Hmm det var inte så snyggt av dem =) Mni första tanke var (och den är troligen korrekt) är att det skall var anågon form av wrapper för att hämta ut en localiserad sträng från en resurs. Dock så är det svårt att säga med parametrarna eftersom <b>GetString</b> metoden på <b>ResourceManager</b> klassen inte kan ta emot samma antal parametrar.
Men utifrån exemplet så skulle det verka rimligt att de vill visa ett felmeddelande på användarens språk om det finns tillgängligt.Sv: Sys.GetString?
Tur att man inte hade missat nåt väsentligt iallafall...Sv: Sys.GetString?
//RogerSv: Sys.GetString?
Nåja, jag sätter det som löst men det är ju intressant att exemplena inte är uppdaterade...Sv: Sys.GetString?
Sv: Sys.GetString?
Men den tanke MS har med Sys i exmplet är precis det Andreas säger, att den hämtar strängen från ResourceManager. Tex:
1) Hämtar "InvalidArgument" från den embedade resursfilen i en assembly.
Den sträng som finns i resurs filen som tex har följande format:
text = "The argument {0} has an an invalid value '{1}'"
2) Sedan används tex string.Format för att formatera strängen:
return string.Format(text, values);
<code>
internal GetString(string key, argumentName, object[] values)
{
ResourceManager rm = new ResourceManager("myResource", typeof(MyClass).Assembly);
string text = rm.GetString(key,null);
return string.Format(text, values);
}
</code>
I .Net så använder MS en Environment.GetResourceKey (i de flesta klasser) som är en intern metod och gör ungefär samma sak som nämndes ovan.
/Fredrik Normén NSQUARED2
http://fredrik.nsquared2.comSv: Sys.GetString?