我有一系列的受理各种数据类型的方法C#wraper类:在运行时确定(C#)
public class MyClass
{
public void ProcessString(string Value) { // implementation }
public void ProcessInt(int? Value) { // implementation }\
public void ProcessOther(MyClass Value) { // implementation }
}
我现在想添加一个通用ProcessObject()
方法以避免需要调用相关的处理方法之前显式转换的对象:
public void ProcessObject(object Value)
{
if (CanCastToString(Value)
{
ProcessString((string)Value);
}
else if (CanCastToInt(Value))
{
ProcessInt((int?)Value);
}
// etc...
}
麻烦的是,我不知道我的CanCastToInt
方法应该是什么 - 我需要这些方法可以是稳健和处理像可为空的类型和其他用户定义的ca STS。
我该怎么做?所有我想知道的是,如果给定的对象可以转换为给定类型,即无论是否:
(SomeType)Value
会工作。
你关心*?也就是说,假设你的对象有一个盒装的短小的东西。你想能够将它转换为int吗?你不能直接将盒装短片投射到int;你必须首先将它转换为int,然后再缩写。您可能想阅读我关于这个主题的文章,以确保您了解这里发生了什么:http://blogs.msdn.com/b/ericlippert/archive/2009/03/19/representation-and-identity.aspx – 2010-06-23 02:03:22
他们必须是盒装价值类型吗?通常情况下,执行此操作的OO方法是使用Process方法创建接口,每个类型都继承您,然后只调用对象上的方法,而不用担心它是什么类型。 – 2010-06-23 08:50:00