这似乎是可能的。
protected SameObjectTypeAsInputParameterObjectType GetAValue(someObject,TypeOrReturnObjectYouWant){
//check to see if someObject is null, if not, cast it and send the cast back
}发布于 2010-01-15 21:25:03
在给定的示例中,只需执行以下操作可能会更好:
MyClass val = myObject as MyClass;然而,为了回答你的问题-是的,答案是使用泛型:
protected T GetAValue<T>(object someObject)
{
if (someObject is T)
{
return (T)someObject;
}
else
{
// We cannot return null as T may not be nullable
// see http://stackoverflow.com/questions/302096/how-can-i-return-null-from-a-generic-method-in-c
return default(T);
}
}在此方法中,T是类型的参数。您可以在代码中以与使用任何其他类型(例如字符串)完全相同的方式使用T,但是请注意,在这种情况下,我们没有对T是什么进行任何限制,因此类型T的对象只具有基本object的属性和方法(GetType()、ToString()等)。
显然,我们必须先声明T是什么,然后才能使用它-例如:
MyClass val = GetAValue<MyClass>(myObject);
string strVal = GetAValue<string>(someObject);有关更多信息,请查看MSDN documentation on Generics
发布于 2010-01-15 21:15:50
这看起来内联会做得更好。
你可以这样做:
var requestedObject = someObject as TheTypeYouWant;当你像这样声明一些东西时,你不会得到一个空引用异常。然后你可以只做一个简单的
if(requestedObject != null){
...
}发布于 2010-01-15 21:17:47
使用泛型:
T foobar<T>() where T : new()
{
return new T();
}
void somefunc()
{
Guid g = foobar<Guid>();
}https://stackoverflow.com/questions/2071681
复制相似问题