La chaîne qualifiée d'assemblée utilisée comme paramètre ci-dessous pour un Uri fonctionne dans XAML, mais me donne l'erreur indiquée lorsqu'elle est utilisée dans le code.
J'ai essayé tous les types d'UriKind avec le même résultat. Comment puis-je résoudre ce problème ?
[Test]
public void LargeImageSource_IsKnown()
{
var uri = new Uri(
"pack://application:,,,/" +
"MyAssembly.Core.Presentation.Wpf;component/" +
"Images/Delete.png", UriKind.RelativeOrAbsolute);
Assert.That(
_pickerActivityCollectionVm.DeleteActivityCommand.LargeImageSource,
Is.EqualTo(uri));
}
System.UriFormatException : Invalid URI: Invalid port specified.
at System.Uri.CreateThis(String uri, Boolean dontEscape, UriKind uriKind)
at System.Uri..ctor(String uriString, UriKind uriKind)
UPDATE
Sur la base de la superbe réponse de Thomas et de mes propres commentaires sur la lisibilité, j'ai fini par utiliser ce qui suit dans ma classe BaseTestFixture. J'espère que cela aidera quelqu'un d'autre.
protected virtual void OnFixtureSetUp() {
// logging, other one time setup stuff...
const string scheme = "pack";
if (!UriParser.IsKnownScheme(scheme)) {
Assert.That(PackUriHelper.UriSchemePack, Is.EqualTo(scheme));
}
}