在C#中,有可能在不同类型的派生类中重新声明属性。从我尝试过它起作用,但是如果我们使用绑定,我们将得到 BindingException - 程序期望基类的类型不是派生类。示例可能如下所示 - XAML:
<TextBlock Text="{Binding Name}" FontSize="24"/>
代码背后:
public class BaseClass
{
public string Name { get { return 8.ToString(); } }
}
public class DerivedClass : BaseClass
{
public new int Name { get { return 6; } }
}
public MainPage()
{
this.InitializeComponent();
DerivedClass myClass = new DerivedClass();
Debug.WriteLine($"Name = {myClass.Name}");
DataContext = myClass;
}
如果我们运行它,我们将看到Name = 6
但我们将得到绑定异常(期望string并获取int)。
XAML绑定是否需要基类类型的类型?
答案 0 :(得分:1)
由于Henk Holterman posted in comment DataBinding 使用反射来获取属性名称 - 您可以找到更多信息at MSDN。如果我们使用新类型在派生类中隐藏属性,则反射返回两种类型。
PropertyInfo[] info = myClass.GetType().GetProperties().ToArray();
从我尝试过的情况来看,当具有相同名称的属性中有多个类型时, BindingExpression 将抛出异常。