関数からオブジェクトを返す方法はありますか。トリッキーな部分は、オブジェクトが任意のタイプになる可能性があることです。セッションから返されるオブジェクトを処理する関数が必要です。したがって、返品したいオブジェクトは、1 分間は製品である可能性がありますが、次の 1 分間は顧客を返品したい場合があります。それは可能ですか、それとも各タイプを返す関数を実行する必要がありますか?
質問する
3179 次
6 に答える
6
- 返し
object
て最高クラスです。 - メソッドをジェネリックにします。
- 戻る
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 に答える