[stringtemplate-interest] IAttributeRenderer and Type Inheritancein C#

Sam Harwell sharwell at pixelminegames.com
Thu Oct 22 09:45:58 PDT 2009


Hi Vincent,

My first thought is this changes an O(1) algorithm that has to run for
every rendered item into an O(n) algorithm. I would have to run this
through the instrumenting profiler to make sure it isn't slowing down
the rendering process before I could include it. There are a few other
ways to approach the problem, but I'm not yet sure which one would work
out best.

Sam

-----Original Message-----
From: stringtemplate-interest-bounces at antlr.org
[mailto:stringtemplate-interest-bounces at antlr.org] On Behalf Of Vincent
DARON
Sent: Thursday, October 22, 2009 10:12 AM
To: stringtemplate-interest at antlr.org
Subject: [stringtemplate-interest] IAttributeRenderer and Type
Inheritancein C#

Hi

I would like to be able to register an IAttributeRenderer for objects 
implementing an Interface.

Part of current implementation of GetAttributeRenderer

        public virtual IAttributeRenderer GetAttributeRenderer( Type
attributeClassType )
        {
            IAttributeRenderer renderer = null;
            if ( _attributeRenderers != null )
            {
                if ( !_attributeRenderers.TryGetValue(
attributeClassType, out renderer ) )
                    renderer = null;
            }
// ...snip ... //
        }


My proposal (untested, but should be ok)

        public virtual IAttributeRenderer GetAttributeRenderer( Type
attributeClassType )
        {
            IAttributeRenderer renderer = null;
            if ( _attributeRenderers != null )
            {
		foreach(Type key in _attributeRenderers.Keys)
		{
			if(key.IsAssignableFrom(attributeClassType))
			{
				renderer = _attributeRenderers[key];
				break;
			}
		}
            }
// ...snip ... //
        }


It will allow to register Attribute Renderer for objects implementing 
interfaces

    RegisterAttributeRenderer(typeof(IFormatProvider), ...);

Goot idea ?

Second question, is it possible to have access to source using Source 
Control (Subversion, Hg, Git, ...) ? It would be far easier to test and 
create patches.

Thanks for answer/comments

Vincent
_______________________________________________
stringtemplate-interest mailing list
stringtemplate-interest at antlr.org
http://www.antlr.org/mailman/listinfo/stringtemplate-interest


More information about the stringtemplate-interest mailing list