0

関数からオブジェクトを返す方法はありますか。トリッキーな部分は、オブジェクトが任意のタイプになる可能性があることです。セッションから返されるオブジェクトを処理する関数が必要です。したがって、返品したいオブジェクトは、1 分間は製品である可能性がありますが、次の 1 分間は顧客を返品したい場合があります。それは可能ですか、それとも各タイプを返す関数を実行する必要がありますか?

4

6 に答える 6

6
  1. 返しobjectて最高クラスです。
  2. メソッドをジェネリックにします。
  3. 戻るdynamic(@AustinSalonenに感謝)

public T Foo<T>(T obj)
{
    var variable = GetTFromFooElse();
    return variable; 
}

public dynamic Foo()
{
    var variable = GetSomethingFromFooElse();
    return variable;
}
于 2012-05-14T17:28:20.313 に答える
4

はい、 Type objectを返すことができます。ただし、リモートで役立つものを使用するには、呼び出し元で結果をキャストする必要があります。

static object CarFactory (){
    return new Car();
}

static void Main(){

    Car car = (Car)CarFactory();

    /* do stuff with car */
    car.Crash();
}

注:タイプ セーフで必要なレベルの抽象化を提供するため、ジェネリックを使用するのが標準です...

于 2012-05-14T17:27:42.957 に答える
1

用途によっては、オブジェクトを使用する代わりにジェネリックを使用できますか?

Session<T>メソッドを持つクラスを持つ

T GetResult()

次のようなインスタンスを作成できます。

var x = new Session<Product>();
var y = new Session<Customer>();

このようにして、いくつかの優れた型安全性を得ることができます。

于 2012-05-14T17:30:17.633 に答える
1

この種のシナリオでは、ある種のサービス/Api を介してセッション クラスをまとめたほうがよいでしょう。

例えば:

public static class SessionAccess
{
    public static Something SomethingSession
    {
        get
        {
            return Session["Something"] as Something;
        }

        set
        {
            Session["Something"] = value;
        }
    }
}

誤って同じセッション キーをステップ オーバーしないようにするため、および基になるデータ型が常に同じであることを保証するために、一貫したセッション アクセス メカニズムを持つことが重要です。

于 2012-05-14T17:31:42.427 に答える
0

メソッドはobjectを返すことができますが、呼び出すときに目的のオブジェクトに変換する必要があります。

于 2012-05-14T17:28:53.987 に答える
0

メソッドがオブジェクトを返す場合、任意のオブジェクトを返すことができます。

于 2012-05-14T17:27:55.733 に答える