public DotnetBaseClassFieldExtractor(Class clazz, string fieldName)
            : base(null, null)
        {
            Type type = null;
            foreach (Assembly assem in AppDomain.CurrentDomain.GetAssemblies())
            {
                type = assem.GetType(clazz.getName().Replace("cli.", ""));
                if(type != null)
                    break;
            }

            this.fieldName = fieldName;
            FieldInfo[] info = type.GetFields();
            string fieldType = type.GetProperty(fieldName).PropertyType.FullName;

            //string originalClassName = clazz.getName().Replace('.', '/');
            //string className = CSClassFieldExtractorFactory.BASE_PACKAGE + "/" + originalClassName + "$" + fieldName;
            try {
                    //this.index = getIndex(type, fieldName);
                    this.index = FieldIndexGenerator.getIndex();
                    this.fieldType = type.GetProperty(fieldName).PropertyType;
                    this.objectType = DotnetClassFieldExtractorFactory.getClassObjectType( this.fieldType );
            } catch ( System.Exception e ) {
                throw new RuntimeDroolsException( e );
            }
        }
        public DotnetBaseClassFieldExtractor(Class clazz, string fieldName) : base(null, null)
        {
            Type type = null;

            foreach (Assembly assem in AppDomain.CurrentDomain.GetAssemblies())
            {
                type = assem.GetType(clazz.getName().Replace("cli.", ""));
                if (type != null)
                {
                    break;
                }
            }

            this.fieldName = fieldName;
            FieldInfo[] info      = type.GetFields();
            string      fieldType = type.GetProperty(fieldName).PropertyType.FullName;


            //string originalClassName = clazz.getName().Replace('.', '/');
            //string className = CSClassFieldExtractorFactory.BASE_PACKAGE + "/" + originalClassName + "$" + fieldName;
            try {
                //this.index = getIndex(type, fieldName);
                this.index      = FieldIndexGenerator.getIndex();
                this.fieldType  = type.GetProperty(fieldName).PropertyType;
                this.objectType = DotnetClassFieldExtractorFactory.getClassObjectType(this.fieldType);
            } catch (System.Exception e) {
                throw new RuntimeDroolsException(e);
            }
        }