public async Task ConvertFrom_Test() { await Task.CompletedTask; var typeConverter = new TypeTypeConverter(); // String (primitive type) var type = typeof(string); var text = type.FullName; Assert.AreEqual(type, typeConverter.ConvertFrom(text)); text = $"{type.FullName}, {type.Assembly.GetName().Name}"; Assert.AreEqual(type, typeConverter.ConvertFrom(text)); text = type.AssemblyQualifiedName; Assert.AreEqual(type, typeConverter.ConvertFrom(text)); // This type. Full name without assembly name will not work. type = this.GetType(); text = $"{type.FullName}, {type.Assembly.GetName().Name}"; Assert.AreEqual(type, typeConverter.ConvertFrom(text)); text = type.AssemblyQualifiedName; Assert.AreEqual(type, typeConverter.ConvertFrom(text)); }
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { TypeTypeConverter converter = new TypeTypeConverter(); value = converter.ConvertFrom(context, CultureInfo.CurrentCulture, value); value = base.EditValue(context, provider, value); value = converter.ConvertTo(context, CultureInfo.CurrentCulture, value, typeof(string)); return(value); }
public void TypeTypeConverterConvertFromInvariantString() { tlog.Debug(tag, $"TypeTypeConverterConvertFromInvariantString START"); var testingTarget = new TypeTypeConverter(); Assert.IsNotNull(testingTarget, "Can't create success object TypeTypeConverter."); Assert.IsInstanceOf <TypeTypeConverter>(testingTarget, "Should return TypeTypeConverter instance."); Assert.Throws <NotImplementedException>(() => testingTarget.ConvertFromInvariantString(null)); tlog.Debug(tag, $"TypeTypeConverterConvertFromInvariantString END"); }
public void ConvertFromIdentifiableStringReturnsTheCorrectType() { var typeContextMock = new Mock<ITypeContext>(); var typeRepoMock = new Mock<IXamlTypeRepository>(); var typeLocator = "type locator"; var xamlType = new XamlType(typeof (DummyClass), typeRepoMock.Object, new TypeFactoryDummy(), new TypeFeatureProviderDummy()); typeContextMock.Setup(context => context.GetByQualifiedName(It.Is<string>(s => s.Equals(typeLocator)))) .Returns(xamlType); var contextMock = new Mock<IXamlTypeConverterContext>(); contextMock.Setup(context => context.TypeRepository).Returns(typeContextMock.Object); var sut = new TypeTypeConverter(); var t = sut.ConvertFrom(contextMock.Object, CultureInfo.CurrentCulture, typeLocator); Assert.AreEqual(typeof(DummyClass), t); }
public void ConvertFromIdentifiableStringReturnsTheCorrectType() { var typeContextMock = new Mock <ITypeContext>(); var typeRepoMock = new Mock <IXamlTypeRepository>(); var typeLocator = "type locator"; var xamlType = new XamlType(typeof(DummyClass), typeRepoMock.Object, new TypeFactoryDummy(), new TypeFeatureProviderDummy()); typeContextMock.Setup(context => context.GetByQualifiedName(It.Is <string>(s => s.Equals(typeLocator)))) .Returns(xamlType); var contextMock = new Mock <IXamlTypeConverterContext>(); contextMock.Setup(context => context.TypeRepository).Returns(typeContextMock.Object); var sut = new TypeTypeConverter(); var t = sut.ConvertFrom(contextMock.Object, CultureInfo.CurrentCulture, typeLocator); Assert.AreEqual(typeof(DummyClass), t); }
private void InitializeWindow() { if (String.IsNullOrEmpty(_windowName)) { return; } string name = null; if (_windowName.StartsWith("$")) { string[] nameParts = _windowName.Split('|'); if ((nameParts.Length > 2) || String.IsNullOrEmpty(nameParts[0])) { throw new InvalidOperationException("Invalid window name. Either the name must be a type name, or must be in the form $<WindowNameParam>|<DefaultName>."); } if (nameParts.Length == 2) { name = nameParts[1]; } if (_startupArguments != null) { string selectedName; string argName = nameParts[0].Substring(1); if (_startupArguments.TryGetValue(argName, out selectedName)) { name = selectedName; } } } else { name = _windowName; } Window mainWindow = null; if (String.IsNullOrEmpty(name) == false) { try { Type windowType = TypeTypeConverter.ParseTypeName(this, name); if (windowType == null) { throw new InvalidOperationException("The window named '" + name + "' could not be found."); } if (typeof(UIElement).IsAssignableFrom(windowType) == false) { throw new InvalidOperationException("The window named '" + name + "' does not derive from UIElement."); } UIElement uiElement = (UIElement)Activator.CreateInstance(windowType); mainWindow = uiElement as Window; if (mainWindow == null) { mainWindow = new Window(uiElement); } } catch (Exception e) { if (e is TargetInvocationException) { e = e.InnerException; } TextBlock errorText = new TextBlock(); errorText.Inlines.Add(new Run() { Text = "The window named '" + name + "' could not be instantiated.", FontWeight = FontWeights.Bold, Foreground = new SolidColorBrush(Colors.Red) }); errorText.Inlines.Add(new LineBreak()); errorText.Inlines.Add(new Run() { Text = e.Message }); mainWindow = new Window(errorText); if (Debugger.IsAttached) { throw; } } } if (mainWindow != null) { Run(mainWindow); } }