XAMLServices.Load в интерфейс

Я столкнулся с этим вопросом, пытаясь установить плагин Cucumber-Eclipse в Eclipse через сайт обновлений. Я получил ту же ошибку SunCertPathBuilderException:

Unable to read repository at http://cucumber.io/cucumber-eclipse/update-site/content.xml.
    Unable to read repository at http://cucumber.io/cucumber-eclipse/update-site/content.xml.
    sun.security.validator.ValidatorException: PKIX path building failed: 
   sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

Хотя некоторые из других ответов являются подходящими и полезными для данной ситуации, они тем не менее бесполезны и вводят в заблуждение для моей проблемы.

В моем случае проблема заключалась в том, что URL-адрес, предоставленный для сайта обновлений:

https://cucumber.io/cucumber-eclipse/update -site

Однако при навигации по нему через браузер он перенаправляется (обратите внимание на добавленный «.github»):

http://cucumber.github.io/cucumber-eclipse/update-site/

Таким образом, разрешение состоит в том, чтобы просто использовать перенаправленную версию URL сайта обновления при добавлении сайта обновления в eclipse.

1
задан Klaus Gütter 17 January 2019 в 11:34
поделиться

1 ответ

Ваш фабричный метод должен быть статическим и находиться в публичном классе.

Следующие работы для меня:

[assembly: XmlnsDefinition("http://schemas.Demo", "MyNameSpace")]

namespace MyNameSpace
{
    public interface IMyInterface
    {
        string MyProperty { get; set; }
    }

    internal class MyClass : IMyInterface
    {
        public string MyProperty { get; set; }
    }

    public static class MyClassFactory
    {
        public static IMyInterface Create()
        {
            return new MyClass();
        }
    }

    public class TestClass
    {
        public static void Test()
        {
            var myInterface = XamlServices.Parse(@"<IMyInterface xmlns:x=""http://schemas.microsoft.com/winfx/2006/xaml"" xmlns=""http://schemas.Demo"" 
    x:FactoryMethod=""MyClassFactory.Create"" 
    MyProperty=""MyValue""/>") as IMyInterface;
            Debug.Assert(myInterface != null);
        }
    }
}
0
ответ дан Klaus Gütter 17 January 2019 в 11:34
поделиться
Другие вопросы по тегам:

Похожие вопросы: