Re: Passing values to a property in C#?



<johnj@xxxxxxxx> schrieb im Newsbeitrag
news:1168511494.566821.74690@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
I am converting an application I wrote in VB.NET to C#. I am not a C#
guy, at all. I am having a problem passing values to a property in C#.
I understand that it is probably not the best way of achieving my
result, but it works in VB.NET, flawlessly.

Basically, I am storing a bunch of settings in a hashtable. Then,
setting/getting my values in the hastable with a public shared
property. Below is the property. The function GetSetting's return will
look similiar to this....

Return System.Web.HttpContext.Current.Application("config")(item)


Public Shared Property Settings(ByVal Item As String) As String

Get
Return CType(GetSetting(Item), String)
End Get

Set(ByVal Value As String)

Try


System.Web.HttpContext.Current.Application("config")(Item) = Value

Catch ex As Exception

GetSetting(Item)

System.Web.HttpContext.Current.Application("config")(Item) = Value

End Try

End Set

End Property


This is a parameterized property, wich doesn't exist in C#. But in C# exist
indexers, wich are equivalent to default properties in VB.Net.


When I convert to C#, Visual Studio is screaming at me. And here is my
C# version....

public static string Settings(string Item)
{
get
{
return ((string)(GetSetting(Item)));
}
set
{
try
{

System.Web.HttpContext.Current.Application["config"][Item] = value;
}
catch (Exception ex)
{
GetSetting(Item);

System.Web.HttpContext.Current.Application["config"][Item] = value;
}
}
}



You could translate this as:
public static string this [string key]
{
get
{
return ((string)(GetSettings(key)));
}
set
{
try
{

System.Web.HttpContext.Current.Application["config"][key] = value;
}
catch (Exception ex)
{
GetSetting(Item);

System.Web.HttpContext.Current.Application["config"][key] = value;
}
}
}

To access ist use:
ClassName[key]
wich can be read and written like a propertie access.
ClassName is the name of the class the indexer is declared in. If the
indexer is not static, it is an instance expression of that class.

One deissadvantage is, that you can't distinguish them by name. But you can
overload them like methods.

Otherwise you have to declare the getter or setter as seperate methods.

hth


.



Relevant Pages

  • Re: C# Static string appending problem.
    ... built up which is being dumped out when the code executes multiple times. ... VerifyPOLineUnique STARTED ... public static string VerifyPOLineUnique(TypedXmlDocument rootNode, ...
    (microsoft.public.dotnet.languages.csharp)
  • Re: C# Static string appending problem.
    ... VerifyPOLineUnique STARTED ... when I execute it a second time, ... public static string VerifyPOLineUnique(TypedXmlDocument rootNode, ...
    (microsoft.public.dotnet.languages.csharp)
  • GetDirectories throws PathTooLongException
    ... DoWorkEventArgs e, string startDirectoryLongForm, string ... numFiles += CountFilesInDirectory(backgroundWorker, e, ... static extern uint GetLongPathName( ... public static string ToLongPathName ...
    (microsoft.public.dotnet.languages.csharp)
  • RE: PKCS7 padding is invalid and cannot be removed.
    ... public static string Decrypt ... > Public cryptoObj As New RijndaelManaged ... > Public Shared Function EncryptAs String ...
    (microsoft.public.dotnet.framework)
  • Re: ASCII Hex string to character conversion
    ... Base64 is much more efficient. ... public static String encodeHexString{ ... int numBytes = hexTextlength/2; ...
    (comp.lang.java.programmer)