有没有办法从函数返回一个对象。棘手的部分是对象可以是任何类型。我想要一个函数来处理会话中的返回对象。因此,我想要返回的对象可能是一分钟的产品,但我可能希望在下一分钟返回客户。是否有可能或者我必须做一个函数来返回每种类型。
答案 0 :(得分:6)
object
这是最高等级。dynamic
(感谢@AustinSalonen)public T Foo<T>(T obj)
{
var variable = GetTFromFooElse();
return variable;
}
public dynamic Foo()
{
var variable = GetSomethingFromFooElse();
return variable;
}
答案 1 :(得分:3)
是的,您可以返回 类型对象 。但是,您需要将结果转换为调用者以使用远程有用的任何内容。
static object CarFactory (){
return new Car();
}
static void Main(){
Car car = (Car)CarFactory();
/* do stuff with car */
car.Crash();
}
注意这是使用泛型的标准,因为它提供了类型安全所需的抽象级别......
答案 2 :(得分:1)
根据您使用的cade而不是使用对象,您可以使用generics吗?
使用方法
创建课程Session<T>
T GetResult()
你可以像这样制作实例:
var x = new Session<Product>();
var y = new Session<Customer>();
这样你可以获得一些不错的类型安全性。
答案 3 :(得分:1)
在这种情况下,最好通过某种Service / Api来包装会话类。
例如:
public static class SessionAccess
{
public static Something SomethingSession
{
get
{
return Session["Something"] as Something;
}
set
{
Session["Something"] = value;
}
}
}
拥有一致的会话访问机制非常重要,以避免意外地跳过相同的会话密钥,并确保它始终是相同的基础数据类型。
答案 4 :(得分:0)
如果你的方法返回一个Object,你可以返回你想要的任何对象。
答案 5 :(得分:0)
您的方法可以返回对象,但您必须在调用时转换为所需的对象。