type cannot be used as an expression

E

eelis.net

Hi

I tried to convert the following C# code to vb.net.

code in C#
________________________________________________________________
using System;
using System.Reflection;
using System.Resources;

namespace LivingObjects.Resources
{
/// <summary>
/// This Class is used to create the ResourceManager for the site.
/// It manages a single instance of this object.
/// </summary>
internal class ResourceFactory
{
/// <summary>
/// Private Contructor. This factory is a static implementation.
/// It cannot be instanciated.
/// </summary>
private ResourceFactory()
{
}

private static ResourceManager _rm;

public static ResourceManager ResourceManager
{
get
{
if(_rm == null)
{
lock(typeof(LivingObjects.Resources.ResourceFactory))
{
if(_rm == null)
{
string resxNamespace =
typeof(LivingObjects.Resources.ResourceFactory).Namespace;
_rm = new ResourceManager(resxNamespace + ".Labels",
System.Reflection.Assembly.GetExecutingAssembly());
}
}
}
return _rm;
}
}

public static string GetLabel(string resourceID)
{
return ResourceManager.GetString(resourceID);
}
}
}
_________________________________________________________________________



code in VB.Net
_________________________________________________________________________
Imports System
Imports System.Reflection
Imports System.Resources

Namespace LivingObjects.Resources

' This Class is used to create the ResourceManager for the site.
' It manages a single instance of this object.

Friend Class ResourceFactory

' Private Contructor. This factory is a static implementation.
' It cannot be instanciated.
Private Sub New()
End Sub

Private Shared _rm As ResourceManager

Public Shared ReadOnly Property ResourceManager() As
ResourceManager
Get
If _rm Is Nothing Then
Lock(Type.GetType(LivingObjects.Resources.ResourceFactory))
If _rm Is Nothing Then
Dim resxNamespace As String =
Type.GetType(LivingObjects.Resources.ResourceFactory).Namespace
_rm = New ResourceManager(resxNamespace +
".Labels", System.Reflection.Assembly.GetExecutingAssembly())
End If
Unlock(Type.GetType(LivingObjects.Resources.ResourceFactory))
End If
Return _rm
End Get
End Property

Public Shared Function GetLabel(ByVal resourceID As String) As
String
Return ResourceManager.GetString(resourceID)
End Function

End Class

End Namespace
__________________________________________________________________________

The error comes in vb.net whenever I use
'LivingObjects.Resources.ResourceFactory'.
The build error says: "'ResourceFactory' is a type in 'Resources' and
cannot be used as an expression."

How can it be implemented then in vb.net? any ideas?

Thanks,

Eelis

p.s. The C# code was created by Jonathan
Gauthier.(http://www.codetools.com/cs/miscctrl/FileSystemListView.asp)
 
I

Imran Koradia

Try replacing Type.GetType with the GetType function:

GetType(LivingObjects.Resources.ResourceFactory)
instead of:
Type.GetType(LivingObjects.Resources.ResourceFactory)


Imran.
 
E

eelis.net

Hi again

That didn't work either. It makes a build error described as:
"value of type 'System.Type' cannot be converted to 'Integer'" for the
whole expression (GetType(LivingObjects.Resources.ResourceFactory)).

Any other ideas...

Thanks a lot!

eelis
 
L

Larry Serflaten

eelis.net said:
That didn't work either. It makes a build error described as:
"value of type 'System.Type' cannot be converted to 'Integer'" for the
whole expression (GetType(LivingObjects.Resources.ResourceFactory)).

Any other ideas...


How about

LivingObjects.Resources.ResourceFactory.GetType.Namespace


The docs say GetType expects a string, at best you're giving it
an object. If the above doesn't work, try passing it a string with
that full name in it.

HTH
LFS
 
I

Imran Koradia

Sorry for the late reply - my outlook express is way out of whack with
message threads.

Anyway, the 'lock' in C# and VB.NET mean different things. Here's how your
VB.NET code should look like:

Imports System
Imports System.Reflection
Imports System.Resources

Namespace LivingObjects.Resources

' This Class is used to create the ResourceManager for the site.
' It manages a single instance of this object.

Friend Class ResourceFactory

' Private Contructor. This factory is a static implementation.
' It cannot be instanciated.
Private Sub New()
End Sub

Private Shared _rm As ResourceManager

Public Shared ReadOnly Property _
ResourceManager() As ResourceManager
Get
If _rm Is Nothing Then
SyncLock GetType( _
LivingObjects.Resources.ResourceFactory)
If _rm Is Nothing Then
Dim resxNamespace As String = _
GetType( _

LivingObjects.Resources.ResourceFactory).Namespace
_rm = New ResourceManager(resxNamespace + ".Labels",
_

System.Reflection.Assembly.GetExecutingAssembly())
End If
End SyncLock
End If
Return _rm
End Get
End Property

Public Shared Function GetLabel( _
ByVal resourceID As String) As String
Return ResourceManager.GetString(resourceID)
End Function

End Class

End Namespace


hope that helps..
Imran.
 

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