Coupling and decoupling has nothing to do with how code is executed - it has to do with how code is referenced. Knowing the C# language doesn't mean you know .NET. If you want to learn more, I suggest you read the SDK, which should be installed on your machine (it is installed by default with VS.NET, but can be installed separately) and available online at http://msdn.microsoft.com/library/en-us/dnanchor/html/netfxanchor.asp[^]. Understanding at least the basic concepts of the CLR (like what assemblies are) is important. Since you didn't tell me what g_pPropSet is defined as, I can only assume it's defined in the Microsoft.VisualBasic.Compatibility assembly. As I mentioned before - converting the code isn't a good idea, especially if you're new to .NET; you'll never learn anything that way. So, just converting the code to C# won't get rid of the assembly dependency - you'll have to rewrite it to use a similar class. Judging by what you seem to be trying to do, a suitable class might be the StringDictionary as I mentioned in my other reply. If you want to know more about architecting .NET solutions, visit http://msdn.microsoft.com/patterns[^].
Microsoft MVP, Visual C# My Articles