我正在尝试将FontAwesome带到UWP并找到SymbolIcon - Class,它为内置的Segoe UI Symbol字体执行此操作。
该类继承自IconElement并且看起来很有前途,但我不能从该类派生,因为VS告诉我“IconElement不接受带有0个参数的构造函数”。
问题:我不知道我应该实施什么,VS或Resharper都没有给我任何见解。即使是SymbolIcon的反编译也没有启发我。
我想念什么?
编辑:
base()只是一个测试,看看IconElements构造函数是否有任何参数。
但我仍然不明白为什么我不能简单地从IconElement派生 - 它的工作没有来自FrameworkElement的任何问题:
答案 0 :(得分:1)
我认为:
public foo() : base()
{
}
不被接受,因为只有类IconElement
没有显式构造函数,所以调用: base()
只是多余的,因为Resharper提示:
为何多余?因为你甚至无法继承那个' IconElement'上课,为什么?因为:
如果类不包含实例构造函数声明,则为默认值 实例构造函数是自动提供的。那个默认 构造函数只是调用direct的无参数构造函数 基类。
更新:
所以问题是当编译器去调用直接基类的无参数构造函数时(在这种情况下是' IconElement'),它根本就找不到任何无参数构造函数(IconElement)没有一个,编译器给它一个默认值,它调用它的父对象,FrameworkElement,因此它生成CS1729 Error。
答案 1 :(得分:1)
IconElement
没有任何public
(或protected
)构造函数。派生类需要调用基础构造函数,因此无法创建派生类。其他hans上的FrameworkElement
有一个默认的无参数protected
构造函数,您可以从派生类调用它,因此您可以创建派生类。
要使SymbolIcon
类能够从IconElement
类派生,它仍然需要IconElement
类中的可访问构造函数。显然,internal
类中有一个可以访问的IconElement
构造函数,因为它位于同一个程序集中。
您可以自己重新创建相同的方案。创建一个只有一个无参数构造函数的类internal
。
public class BaseClass()
{
internal BaseClass() { }
}
您现在可以在同一个程序集中创建派生类(它可以调用此内部构造函数),但是您将无法从引用此程序集的另一个程序集中执行此操作(在该程序集上将不会有可访问的构造函数)基类)。
我不确定你为什么要从IconElement
类派生出来,但是你无法做到。即使它实现的IIconElement
接口也是内部接口,因此您也无法自己实现它。
此外,所有这些类都是本机实现的,因此您无法真正反编译它们。在*.winmd
文件中只有可用的托管元数据,如果您尝试在例如ReSharper的。