I can't cast the SchematicDataset to IGeoDatasetSchemaEdit because I get an InvalidCastException. Here is my code:
I create a schematicWorkspace from a IWorkspace like this:
[...]
ISchematicWorkspaceFactory schematicWorkspaceFactory = new SchematicWorkspaceFactoryClass();
ISchematicWorkspace schematicWorkspace = schematicWorkspaceFactory.Open(workspace);
Then, I create the schematic dataset:
schematicDataset = schematicWorkspace.CreateSchematicDataset(SCHEMATIC_DATASET_NAME);
schematicDataset.DesignMode = true;
Type objectType = Type.GetTypeFromProgID("esriSchematic.SchematicStandardBuilder");
ISchematicStandardBuilder schematicStandardBuilder = Activator.CreateInstance(objectType) as ISchematicStandardBuilder;
schematicStandardBuilder.AddConnectedNodes = true;
schematicStandardBuilder.InitializeLinksVertices = true;
schematicStandardBuilder.AutoCreateElementClasses = true;
schematicDiagramClass = schematicDataset.CreateSchematicDiagramClass(SCHEMATIC_DIAGRAM_CLASS_NAME);
schematicDiagramClass.SchematicBuilder = schematicStandardBuilder as ISchematicBuilder;
schematicDiagramClass.SchematicDataSource = schematicDataset.DefaultSchematicDataSource;
schematicDiagramClass.ExternalQueryEvaluationMode = esriSchematicExternalQueryEvaluationMode.esriSchematicNoQuery;
schematicDiagramClass.AlwaysLoadDiagrams = true;
Then, I define the spatial reference:
ISpatialReference spatialReference = gdbDataset.getSpatialReference();
IGeoDatasetSchemaEdit geoDataset = (IGeoDatasetSchemaEdit)schematicDataset; // here I get an InvalidCastException
geoDataset.AlterSpatialReference(spatialReference);
IGeoDatasetSchemaEdit geoDiagramClass = (IGeoDatasetSchemaEdit)schematicDiagramClass;
geoDiagramClass.AlterSpatialReference(spatialReference);