0
   Using<GetFillupById>().Execute(id);

そのような構文を見たことがありません。使用の定義は次のとおりです。

protected T Using<T>() where T : class
    {
        var handler = serviceLocator.GetInstance<T>();
        if (handler == null)
        {
            throw new NullReferenceException("Unable to resolve type with service locator; type " + typeof(T).Name);
        }
        return handler;
    }

誰かが正確にこれが何であるかを教えてくれるなら-機能、特性?または私が読むことができるいくつかのリンクを見せてください-私は感謝します

4

5 に答える 5

2

このメソッド/関数は、サービスロケーターを使用してタイプのインスタンスを提供し、Tそのインスタンスを返し、呼び出すことができるようにします。これに類似しています:

new GetFillupById().Execute(id);

ただし、デフォルトのコンストラクター呼び出しの代わりに、このヘルパーメソッドはオブジェクトの初期化をラップし、それをサービスロケーターオブジェクトに委任します。ジェネリックスを使用すると、これをサービスロケーターによって認識される任意のタイプの単一のメソッド呼び出しとして使用できます。

型制約は、このメソッドが、構造ではなくクラスであるwhere T : class任意の型、つまり値型ではなく参照に対して有効に呼び出すことができることを意味します。T逆はですwhere T : structTまた、特定のインターフェイスを実装する、特定のクラスを拡張する、またはデフォルトのコンストラクター()を公開する必要があるという制約を含めることもできますwhere T : new()

検索する関連概念:ジェネリック、制御の反転。

于 2012-07-12T08:56:20.510 に答える
1

あるクラスのジェネリックメソッドです。

あなたはここでより多くの情報を見つけることができます

于 2012-07-12T08:56:49.330 に答える
1

その一般的な方法...

MSDN: http: //msdn.microsoft.com/en-us/library/twcad0zb (v=vs.80).aspx

于 2012-07-12T08:57:30.290 に答える
0

これ(Using<T>)はジェネリックメソッドです。一般的なメソッドの概要については、このMSDNの記事を参照してください。

于 2012-07-12T08:55:45.740 に答える
0

SO htmlパーサーがあなたを食べて<T>しまい、メソッドは次のようになっていると思います。

protected T Using<T>() 
    where T: class 
{ 
    var handler = serviceLocator.GetInstance(); 

    if (handler == null) 
    { 
        throw new NullReferenceException("Unable to resolve type with service locator; type " + typeof (T).Name); 
    } 

    return handler; 
}

そのメソッドまたはこのメソッドのいずれかがジェネリッククラス内にありました(それ以外の場合、Tに指定されたタイプはありません)

C#にはジェネリック型がたくさんあります

チェックアウトSystem.Collections.Generic

あなたが見たかもしれないタイプはあなたがList<T>タイプの強く型付けされたリストを作成することを可能にするものですT

例えば

var myList = new List<int>(); // This is a strongly typed list of int - if you call myList.Add() the Add will expect an int as the first parameter - at design time an error will be raised if the a non compatible type is used

彼の答えのPrateeksリンクの情報をチェックしてください

于 2012-07-12T09:01:35.013 に答える