Passing values to a property in C#?

J

johnj

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


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;
}
}
}


If it was simply rewriting a few lines of code, I wouldn't have even
posted here. But, again, this is my method of setting/getting all my
application variables. So, if I have to change the way I am doing this,
I will have to do it everywhere in the application. Please help! :(
 
C

Christof Nordiek

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top