如何编写方法以接受类型作为参数,并在方法体中使用它将另一个变量强制转换为传递的类型
本文关键字:类型 方法 变量 另一个 转换 何编写 参数 | 更新日期: 2023-09-27 18:06:07
我想要的是有一个方法,它接受一个类型作为参数,并将变量强制转换为c#中的该类型
作为一个例子,我想传递一个UI元素到这个助手方法,并提取其DataContext的(在运行时动态绑定)描述。我想以一种更通用的方式使用这个方法,这样我也可以传入DataContext的类型。
private String GetDescription(FrameworkElement element, Type type) {
return (element.DataContext as type).Description;
//or
//return ((type)element.DataContext).Description;
}
这两种方式都会导致编译时错误。
我也试过使用泛型,但是没有成功,因为我可能没有正确理解。
如果有人能以一种简单的方式解释如何做到这一点,那就太好了。为你的类编写一个interface
并实现它:
public interface IDescribable
{
string Description{get;}
}
在你想要的类上实现这个对象:
public class MyClass:IDescribable
{
// other members
public string Description{get; set;}
}
那么你甚至可以写一个扩展方法来提取字符串:
public static string GetDescription(this FrameworkElement element)
{
var contextData= element.DataContext as IDescribable;
return contextData!=null
? contextData.Description
:"";
}
或者如果你不想实现interface
使用反射:
private string GetDescription(FrameworkElement element)
{
var decProp= element.DataContext.GetType().GetProperty("Description");
return decProp!=null
?decProp.GetValue(element.DataContext)
:"";
}