public TraversedDatasourceResult GetDataSource(DesignTimeDataSourceDefinition definition) { var rootDatasource = GetDataSourceWithoutTraversal(definition); // Traverse Relation Path var targetDataSource = ObjectGraphPathTraverser.TraversePath(rootDatasource, definition.DataSourceRelationPath); // Assign Datasource Types to DesignTimeDatasource, not that we've obtained the datasource & traversed the relation path definition.RootDataSourceType = null; definition.DataSourceType = null; if (rootDatasource != null) { definition.RootDataSourceType = rootDatasource.GetType(); } if (targetDataSource != null) { definition.DataSourceType = targetDataSource.GetType(); } return(new TraversedDatasourceResult(definition, rootDatasource, targetDataSource)); }
public static object TraversePath(object dataSource, string path) { var traverser = new ObjectGraphPathTraverser(dataSource, path); return(traverser.Traverse()); }