从函数中返回任何类型的对象

时间:2012-05-14 17:25:59

标签: c# oop inheritance

有没有办法从函数返回一个对象。棘手的部分是对象可以是任何类型。我想要一个函数来处理会话中的返回对象。因此,我想要返回的对象可能是一分钟的产品,但我可能希望在下一分钟返回客户。是否有可能或者我必须做一个函数来返回每种类型。

6 个答案:

答案 0 :(得分:6)

  1. 返回object这是最高等级。
  2. 使方法通用。
  3. 返回dynamic(感谢@AustinSalonen)

  4. 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)

您的方法可以返回对象,但您必须在调用时转换为所需的对象。