本文整理汇总了C#中ITypeConverter.TryConvertType方法的典型用法代码示例。如果您正苦于以下问题:C# ITypeConverter.TryConvertType方法的具体用法?C# ITypeConverter.TryConvertType怎么用?C# ITypeConverter.TryConvertType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ITypeConverter
的用法示例。
在下文中一共展示了ITypeConverter.TryConvertType方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SetDefaultValues
private static void SetDefaultValues(ITypeConverter typeConverter, CultureInfo cultureInfo, BuildContext ctx)
{
// set default values
foreach (Parameter parameter in ctx.ParameterSet)
{
var attr = parameter.GetAttribute<DefaultValueAttribute>();
if (attr == null)
continue;
string strVal = attr.Value as string;
if (strVal != null)
{
if (parameter.Property.PropertyType != typeof(string))
{
Parser parser = new Parser();
NodeSequence seq = parser.Parse(strVal);
using (ValueBuilder valueBuilder = new ValueBuilder())
{
object value;
if (valueBuilder.Build(parameter.Property.PropertyType, seq[0], out value))
{
parameter.Property.SetValue(ctx.Instance, value, null);
}
else
{
string message = string.Format(Exceptions.FailedToParseDefaultValue,
strVal,
parameter.Property.PropertyType.FullName);
throw new ParameterDefinitionException(parameter.Property, message);
}
}
}
else
{
parameter.Property.SetValue(ctx.Instance, strVal, null);
}
}
else
{
object value = attr.Value;
if (value == null)
{
if (!parameter.Property.PropertyType.IsValueType)
{
parameter.Property.SetValue(ctx.Instance, value, null);
}
else
{
string message = string.Format(Exceptions.FailedToConvertDefaultValue,
"NULL",
"",
parameter.Property.PropertyType.FullName);
throw new ParameterDefinitionException(parameter.Property, message);
}
}
else
{
IEnumerable<Exception> exceptions;
if (typeConverter.TryConvertType(cultureInfo, parameter.Property.PropertyType, ref value, out exceptions))
{
parameter.Property.SetValue(ctx.Instance, value, null);
}
else
{
string message = string.Format(Exceptions.FailedToConvertDefaultValue,
value,
value.GetType().FullName,
parameter.Property.PropertyType.FullName);
throw new ParameterDefinitionException(parameter.Property, message);
}
}
}
}
}