e79aa3c0ed
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
94 lines
3.6 KiB
C#
94 lines
3.6 KiB
C#
//-----------------------------------------------------------------------------
|
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
namespace Microsoft.VisualBasic.Activities
|
|
{
|
|
using Microsoft.VisualBasic.Activities.XamlIntegration;
|
|
using System;
|
|
using System.Activities;
|
|
using System.Collections.Generic;
|
|
using System.Runtime;
|
|
using System.Windows.Markup;
|
|
using System.Xaml;
|
|
using System.ComponentModel;
|
|
using System.Reflection;
|
|
|
|
[ValueSerializer(typeof(VisualBasicSettingsValueSerializer))]
|
|
[TypeConverter(typeof(VisualBasicSettingsConverter))]
|
|
public class VisualBasicSettings
|
|
{
|
|
|
|
static readonly HashSet<VisualBasicImportReference> defaultImportReferences = new HashSet<VisualBasicImportReference>()
|
|
{
|
|
//"mscorlib"
|
|
new VisualBasicImportReference { Import = "System", Assembly = "mscorlib" },
|
|
new VisualBasicImportReference { Import = "System.Collections", Assembly = "mscorlib" },
|
|
new VisualBasicImportReference { Import = "System.Collections.Generic", Assembly = "mscorlib" },
|
|
//"system"
|
|
new VisualBasicImportReference { Import = "System", Assembly = "system" },
|
|
new VisualBasicImportReference { Import = "System.Collections.Generic", Assembly = "system" },
|
|
//"System.Activities"
|
|
new VisualBasicImportReference { Import = "System.Activities", Assembly = "System.Activities" },
|
|
new VisualBasicImportReference { Import = "System.Activities.Statements", Assembly = "System.Activities" },
|
|
new VisualBasicImportReference { Import = "System.Activities.Expressions", Assembly = "System.Activities" },
|
|
};
|
|
|
|
static VisualBasicSettings defaultSettings = new VisualBasicSettings(defaultImportReferences);
|
|
|
|
public VisualBasicSettings()
|
|
{
|
|
this.ImportReferences = new HashSet<VisualBasicImportReference>();
|
|
}
|
|
|
|
VisualBasicSettings(HashSet<VisualBasicImportReference> importReferences)
|
|
{
|
|
Fx.Assert(importReferences != null, "caller must verify");
|
|
this.ImportReferences = new HashSet<VisualBasicImportReference>(importReferences);
|
|
}
|
|
|
|
public static VisualBasicSettings Default
|
|
{
|
|
get
|
|
{
|
|
return defaultSettings;
|
|
}
|
|
}
|
|
|
|
// hide from XAML since the value serializer can't suppress yet
|
|
[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
|
|
public ISet<VisualBasicImportReference> ImportReferences
|
|
{
|
|
get;
|
|
private set;
|
|
}
|
|
|
|
internal bool SuppressXamlSerialization
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
internal void GenerateXamlReferences(IValueSerializerContext context)
|
|
{
|
|
// promote settings to xmlns declarations
|
|
INamespacePrefixLookup namespaceLookup = GetService<INamespacePrefixLookup>(context);
|
|
foreach (VisualBasicImportReference importReference in this.ImportReferences)
|
|
{
|
|
importReference.GenerateXamlNamespace(namespaceLookup);
|
|
}
|
|
}
|
|
|
|
internal static T GetService<T>(ITypeDescriptorContext context) where T : class
|
|
{
|
|
T service = (T)context.GetService(typeof(T));
|
|
if (service == null)
|
|
{
|
|
throw FxTrace.Exception.AsError(new InvalidOperationException(SR.InvalidTypeConverterUsage));
|
|
}
|
|
|
|
return service;
|
|
}
|
|
}
|
|
}
|