我正在使用.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();
我知道,这不是我编写它的方式。但是工厂方法可以帮助我吗?它会是什么样子?