コード例 #1
0
        IEnumerable<IConversion> Combination(INavigator navigator, IConversion startFeature = null)
        {
            var startType = Source;
            if(startFeature != null)
                startType = navigator.End(startFeature);

            foreach(var feature in AllFeatures.Where(feature => navigator.Start(feature) == startType))
            {
                var destination = navigator.End(feature);
                if(_foundTypes.Contains(destination))
                    continue;
                _foundTypes.Add(destination);
                var newFeature = navigator.Combine(startFeature, feature);
                if(newFeature == null)
                    continue;
                yield return newFeature;
                _newFeatures.Add(newFeature);
            }
        }