Re: Passing values to a property in C#?
- From: "Christof Nordiek" <cn@xxxxxxxxx>
- Date: Thu, 11 Jan 2007 11:54:43 +0100
<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
.
- References:
- Passing values to a property in C#?
- From: johnj
- Passing values to a property in C#?
- Prev by Date: Unable to run .exe application using C# code
- Next by Date: Re: strange taborder behaviour
- Previous by thread: Re: Passing values to a property in C#?
- Next by thread: How to multiselect entries in drop down
- Index(es):
Relevant Pages
|