如何与接口一起使用工厂方法

时间:2018-12-23 10:36:00

标签: c# interface factory-method

我正在使用.Net 4.7.2和C#7

我想使用 XamlServices.Load 提供数据 通常,我会使用这样的东西

using System.Windows.Markup;
using System.Xaml;

[assembly: XmlnsDefinition( "http://MyNamespace.de" , "MyNamespace" )]

namespace MyNamespace
{

    public class MyExecutingClass
    {
        private void Load()
        {            
            var targetClass = XamlServices.Load( @"C:\MyFile.xml" ) as TargetClass;
            // ...
        }
    }


    public class TargetClass
    {
        public int Value { get; set; }

    }
}

文件内容如下:

<TargetClass xmlns="http://MyNamespace.de" Value="5" />

就我而言,我无权访问 TargetClass ,但可以访问它的接口 ITargetClass

所以代码看起来像这样:

public class MyExecutingClass
{
    private void Load()
    {            
        var targetClass = XamlServices.Load( @"C:\MyFile.xml" ) as ITargetClass;
        // ...
    }

}

public interface ITargetClass
{
    int Value { get; set; }

}

/// <summary>
/// I can't access this class from the Load method
/// </summary>
internal class TargetClass : ITargetClass
{
    public int Value { get; set; }

}

内容:

<ITargetClass xmlns="http://MyNamespace.de" Value="5" />

XamlServices.Load试图实例化ITargetClass,该实例失败,因为您无法实例化接口。

抛出MissingMethodException,它说: 找不到类型ITargetClass的默认构造函数。可以使用参数或工厂方法指令来创建类型。

我需要什么实现?

添加

我基本上需要的是这样的一行:

ITargetClass targetClass = new ITargetClass();

我知道,这不是我编写它的方式。但是工厂方法可以帮助我吗?它会是什么样子?

0 个答案:

没有答案