80 lines
2.9 KiB
C#
80 lines
2.9 KiB
C#
|
//-----------------------------------------------------------------------------
|
|||
|
// Copyright (c) Microsoft Corporation. All rights reserved.
|
|||
|
//-----------------------------------------------------------------------------
|
|||
|
|
|||
|
namespace Microsoft.VisualBasic.Activities.XamlIntegration
|
|||
|
{
|
|||
|
using System;
|
|||
|
using System.ComponentModel;
|
|||
|
using System.Runtime;
|
|||
|
using System.Globalization;
|
|||
|
using System.Activities;
|
|||
|
|
|||
|
// this class is necessary in order for our value serializer to get called by XAML,
|
|||
|
// even though the functionality is a no-op
|
|||
|
public sealed class VisualBasicSettingsConverter : TypeConverter
|
|||
|
{
|
|||
|
public VisualBasicSettingsConverter()
|
|||
|
: base()
|
|||
|
{
|
|||
|
}
|
|||
|
|
|||
|
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
|
|||
|
{
|
|||
|
if (sourceType == TypeHelper.StringType)
|
|||
|
{
|
|||
|
return true;
|
|||
|
}
|
|||
|
|
|||
|
return base.CanConvertFrom(context, sourceType);
|
|||
|
}
|
|||
|
|
|||
|
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
|
|||
|
{
|
|||
|
if (destinationType == TypeHelper.StringType)
|
|||
|
{
|
|||
|
return false;
|
|||
|
}
|
|||
|
return base.CanConvertTo(context, destinationType);
|
|||
|
}
|
|||
|
|
|||
|
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
|
|||
|
{
|
|||
|
string sourceString = value as string;
|
|||
|
if (sourceString != null)
|
|||
|
{
|
|||
|
if (sourceString.Equals(VisualBasicSettingsValueSerializer.ImplementationVisualBasicSettingsValue))
|
|||
|
{
|
|||
|
// this is the VBSettings for the internal implementation
|
|||
|
// suppress its Xaml serialization
|
|||
|
VisualBasicSettings settings = CollectXmlNamespacesAndAssemblies(context);
|
|||
|
if (settings != null)
|
|||
|
{
|
|||
|
settings.SuppressXamlSerialization = true;
|
|||
|
}
|
|||
|
return settings;
|
|||
|
}
|
|||
|
|
|||
|
if (!(sourceString.Equals(String.Empty) || sourceString.Equals(VisualBasicSettingsValueSerializer.VisualBasicSettingsValue)))
|
|||
|
{
|
|||
|
throw FxTrace.Exception.AsError(new InvalidOperationException(SR.InvalidVisualBasicSettingsValue));
|
|||
|
}
|
|||
|
|
|||
|
return CollectXmlNamespacesAndAssemblies(context);
|
|||
|
}
|
|||
|
return base.ConvertFrom(context, culture, value);
|
|||
|
}
|
|||
|
|
|||
|
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
|
|||
|
{
|
|||
|
return base.ConvertTo(context, culture, value, destinationType);
|
|||
|
}
|
|||
|
|
|||
|
VisualBasicSettings CollectXmlNamespacesAndAssemblies(ITypeDescriptorContext context)
|
|||
|
{
|
|||
|
return VisualBasicExpressionConverter.CollectXmlNamespacesAndAssemblies(context);
|
|||
|
}
|
|||
|
|
|||
|
}
|
|||
|
}
|