I figured out how to resolve that problem when I realized the power of "eval()".
For anyone interested in doing something similar, here's the code I have now:
% list of all folders in FilterFunctions:
flist = getAllFiles('FilterFunctions');
% prepare result
filterlist = struct('Name',{},'Classname',{});
for i=1:numel(flist)
   [~,filename,fileext]=fileparts(flist{i}); % get just the filename
   if (exist(filename,'class') == 8) && (strcmp(fileext,'.m'))
      try 
         if(isa(eval(filename),'Filter'))
            filterlist(end+1) = struct( ... 
                 'Name', eval([filename '.Name']), ...
                 'Classname',filename ... 
                 );
         end
      catch % no problem - its eval
      end
   end
end
