[Mono-list] Indexer mcs compilation failure on Mono 0.29/Fedora Core 1
Roelof Blom
blom@hotitem.nl
Tue, 16 Dec 2003 17:06:45 +0100
This is a multi-part message in MIME format.
--------------050901020403080902030904
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi,
In the attached file (part of the ConfigurationManagement Application
Block supplied by Microsoft), mcs fails to compile the following indexer:
~ public string this [ string key, params object[] par ]
~ {
~ get
~ {
~ return string.Format( CultureInfo.CurrentUICulture,
_resourceManager.GetString( key, CultureInfo.CurrentCulture ), par );
~ }
~ }
It fails with this error:
Unhandled Exception: System.NullReferenceException: A null value was
found where an object instance was required
in <0x00695> Mono.CSharp.Indexer:Define (Mono.CSharp.TypeContainer)
in <0x002cc> Mono.CSharp.TypeContainer:DefineIndexers ()
in <0x00768> Mono.CSharp.TypeContainer:DefineMembers
(Mono.CSharp.TypeContainer)in <0x00353>
Mono.CSharp.RootContext:PopulateTypes ()
in <0x007cf> Mono.CSharp.Driver:MainDriver (string[])
in <0x0001b> Mono.CSharp.Driver:Main (string[])
Is this a known bug? If so, does it have a workaround?
Regards,
Roelof.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.2 (MingW32)
Comment: Using GnuPG with Thunderbird - http://enigmail.mozdev.org
iD8DBQE/3y2VyC+qmHFU70gRApLRAJwPC7x8U9YJX2fPvzwbfgpet1ZaAwCgyX63
6lLjqLOHKLyBowK2NReW2FI=
=lDr/
-----END PGP SIGNATURE-----
--------------050901020403080902030904
Content-Type: text/plain;
name="Resource.cs"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;
filename="Resource.cs"
// ===============================================================================
// Microsoft Configuration Management Application Block for .NET
// http://msdn.microsoft.com/library/en-us/dnbda/html/cmab.asp
//
// Resource.cs
//
// Wrapper to make the use of resources easy on the code.
//
// For more information see the Configuration Management Application Block Implementation Overview.
//
// ===============================================================================
// Copyright (C) 2000-2001 Microsoft Corporation
// All rights reserved.
// THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY
// OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT
// LIMITED TO THE IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR
// FITNESS FOR A PARTICULAR PURPOSE.
// ==============================================================================
using System;
using System.Globalization;
using System.IO;
using System.Resources;
using System.Reflection;
namespace Microsoft.ApplicationBlocks.ConfigurationManagement
{
/// <summary>
/// Helper class used to manage application resources
/// </summary>
internal sealed class Resource
{
#region Static part
private static readonly Resource _resource;
// static constructor private by nature. Initialize our read-only member _resourceManager here,
// there will only ever be one copy.
static Resource()
{
_resource = new Resource();
}
// return the singleton instance of Resource
public static Resource ResourceManager
{
get
{
return _resource;
}
}
#endregion
#region Instance part
// this is the ACTUAL resource manager, for which this class is just a convenience wrapper
private ResourceManager _resourceManager = null;
// make constructor private so no one can directly create an instance of Resource, only use the Static Property ResourceManager
private Resource()
{
_resourceManager = new ResourceManager(this.GetType().Namespace + ".ConfigurationManagerText", Assembly.GetExecutingAssembly());
}
// a convenience Indexer that access the internal resource manager
public string this [ string key ]
{
get
{
return _resourceManager.GetString( key, CultureInfo.CurrentCulture );
}
}
public string this [ string key, params object[] par ]
{
get
{
return string.Format( CultureInfo.CurrentUICulture, _resourceManager.GetString( key, CultureInfo.CurrentCulture ), par );
}
}
public Stream GetStream( string name )
{
return Assembly.GetExecutingAssembly().GetManifestResourceStream( name );
}
#endregion
}
}
--------------050901020403080902030904--