Строка с указанием сборки, используемая в качестве параметра ниже для Uri, работает в XAML, но выдает ошибку, отображаемую при использовании в коде.
Я пробовал все виды UriKind с одинаковым результатом. Как я могу это исправить?
[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
Основываясь на превосходном ответе Томаса и моих собственных комментариях о читабельности, я использовал следующее в своем классе BaseTestFixture. Надеюсь, это поможет кому-то еще.
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));
}
}