118 lines
4.8 KiB
C#
118 lines
4.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using KGdev.BI3D.Revit.Common;
|
|
using KGdev.BI3D.Revit.DataExporter.JsonTable;
|
|
using KGdev.BI3D.Revit.ExporterV2;
|
|
using KGdev.BI3D.Revit.Implementations;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
|
|
namespace KGdev.BI3D.Revit
|
|
{
|
|
public class Extension
|
|
{
|
|
public static Extension Instance
|
|
{
|
|
get
|
|
{
|
|
object obj = Extension.instanceLock;
|
|
Extension extension;
|
|
lock (obj)
|
|
{
|
|
if (Extension.instance == null)
|
|
{
|
|
Extension.instance = new Extension();
|
|
}
|
|
extension = Extension.instance;
|
|
}
|
|
return extension;
|
|
}
|
|
}
|
|
|
|
public IServiceProvider ServiceProvider { get; private set; }
|
|
|
|
private Extension()
|
|
{
|
|
this.ServiceProvider = this.BuildServiceProvider();
|
|
}
|
|
|
|
private IServiceProvider BuildServiceProvider()
|
|
{
|
|
ServiceCollection serviceCollection = new ServiceCollection();
|
|
serviceCollection.AddTransient<IBI3DViewsProvider, DefaultBI3DViewsProvider>(
|
|
(IServiceProvider _) => new DefaultBI3DViewsProvider()
|
|
);
|
|
serviceCollection.AddTransient<IElementIdProvider, DefaultElementIdProvider>(
|
|
(IServiceProvider _) => new DefaultElementIdProvider()
|
|
);
|
|
serviceCollection.AddTransient<
|
|
ILinkedDocumentsUtilities,
|
|
DefaultLinkedDocumentUtilities
|
|
>((IServiceProvider _) => new DefaultLinkedDocumentUtilities());
|
|
serviceCollection.AddTransient<IExporter, Exporter>(
|
|
(IServiceProvider provider) =>
|
|
{
|
|
IBI3DViewsProvider requiredService =
|
|
provider.GetRequiredService<IBI3DViewsProvider>();
|
|
IElementIdProvider requiredService2 =
|
|
provider.GetRequiredService<IElementIdProvider>();
|
|
IGlobalStore requiredService3 = provider.GetRequiredService<IGlobalStore>();
|
|
ILinkedDocumentsUtilities requiredService4 =
|
|
provider.GetRequiredService<ILinkedDocumentsUtilities>();
|
|
//IAuthProvider requiredService5 = provider.GetRequiredService<IAuthProvider>();
|
|
IElementIdProvider requiredService6 =
|
|
provider.GetRequiredService<IElementIdProvider>();
|
|
return new Exporter(
|
|
requiredService,
|
|
requiredService3,
|
|
requiredService4,
|
|
//requiredService5,
|
|
requiredService6
|
|
);
|
|
}
|
|
);
|
|
serviceCollection.AddTransient(
|
|
(IServiceProvider provider) =>
|
|
{
|
|
ILinkedDocumentsUtilities requiredService7 =
|
|
provider.GetRequiredService<ILinkedDocumentsUtilities>();
|
|
IElementIdProvider requiredService8 =
|
|
provider.GetRequiredService<IElementIdProvider>();
|
|
return new List<IDataExporter>
|
|
{
|
|
new JsonTableDataExporter(requiredService7, requiredService8)
|
|
};
|
|
}
|
|
);
|
|
serviceCollection.AddTransient<IGlobalStore, DefaultGlobalStore>(
|
|
(IServiceProvider _) => new DefaultGlobalStore()
|
|
);
|
|
serviceCollection.AddTransient<IMuidProvider, DefaultMuidProvider>(
|
|
(IServiceProvider _) => new DefaultMuidProvider()
|
|
);
|
|
serviceCollection.AddTransient<IConstantsProvider, DefaultConstantsProvider>(
|
|
(IServiceProvider _) => new DefaultConstantsProvider()
|
|
);
|
|
//serviceCollection.AddTransient<IAuthProvider, DefaultAuthProvider>(
|
|
// (IServiceProvider provider) =>
|
|
// {
|
|
// IMuidProvider requiredService9 = provider.GetRequiredService<IMuidProvider>();
|
|
// IConstantsProvider requiredService10 =
|
|
// provider.GetRequiredService<IConstantsProvider>();
|
|
// IGlobalStore requiredService11 = provider.GetRequiredService<IGlobalStore>();
|
|
// return new DefaultAuthProvider(
|
|
// requiredService10.ProductId,
|
|
// requiredService9,
|
|
// requiredService11
|
|
// );
|
|
// }
|
|
//);
|
|
|
|
return serviceCollection.BuildServiceProvider();
|
|
}
|
|
|
|
private static Extension instance;
|
|
|
|
private static object instanceLock = new object();
|
|
}
|
|
}
|