C# 按类型更改控件的类型
我有以下问题。C# 按类型更改控件的类型,c#,wpf,properties,types,C#,Wpf,Properties,Types,我有以下问题。 我应该将控件转换为特定类型,这可以是多种类型 (例如自定义按钮或自定义标签等) 下面是我想做的一个例子: private void ConvertToTypeAndUseCustomProperty(Control c) { Type type = c.getType(); ((type) c).CustomPropertieOfControl = 234567; } 提前感谢假设您控制具有“CustomPropertyOfControl”的类型是否公平?如
我应该将控件转换为特定类型,这可以是多种类型
(例如自定义按钮或自定义标签等)
下面是我想做的一个例子:
private void ConvertToTypeAndUseCustomProperty(Control c)
{
Type type = c.getType();
((type) c).CustomPropertieOfControl = 234567;
}
提前感谢假设您控制具有“CustomPropertyOfControl”的类型是否公平?如果是这样,那么让它们都实现一个接口,并转换到该接口 强制转换的要点是在编译时告诉编译器一些你知道它不知道的事情。在这里,您不知道编译时的类型。如果您知道一些基类或接口,那么您可以毫无问题地告诉编译器 现在在C#4中,您可以使用动态键入来实现这一点:
private void ConvertToTypeAndUseCustomProperty(Control c)
{
dynamic d = c;
d.CustomPropertyOfControl = 234567;
}
然而,即使你可以做到这一点,如果可能的话,我仍然建议你坚持使用静态类型——如果你有一组类型都有一些共同的功能,给它们一个共同的接口。假设你控制了具有“CustomPropertyOfControl”的类型是否公平?如果是这样,那么让它们都实现一个接口,并转换到该接口 强制转换的要点是在编译时告诉编译器一些你知道它不知道的事情。在这里,您不知道编译时的类型。如果您知道一些基类或接口,那么您可以毫无问题地告诉编译器 现在在C#4中,您可以使用动态键入来实现这一点:
private void ConvertToTypeAndUseCustomProperty(Control c)
{
dynamic d = c;
d.CustomPropertyOfControl = 234567;
}
然而,即使你能做到这一点,我还是建议尽可能坚持使用静态类型——如果你有一组类型都有一些共同的功能,给它们一个共同的接口。尽管4.0之前的C#不支持VB那样的动态类型解析,它可以通过一点反射来实现
private void ConvertToTypeAndUseCustomProperty(Control c)
{
PropertyInfo p = c.GetType().GetProperty("CustomPropertieOfControl");
if (p == null)
return;
p.SetValue(c, new object[] { 234567 });
}
虽然4.0之前的C#不象VB那样支持动态类型解析,但它可以通过一点反射来实现
private void ConvertToTypeAndUseCustomProperty(Control c)
{
PropertyInfo p = c.GetType().GetProperty("CustomPropertieOfControl");
if (p == null)
return;
p.SetValue(c, new object[] { 234567 });
}