私はC#の初心者ですが、プログラミングはしていませんので少し混ぜてみてください - それはまったく意図しないことです。私はいくつかのpublicプロパティ(アクセサー/ミューテータ)を持つ "API"というかなり単純なクラスを作成しました。私はまた、クラス内の名前各プロパティの&種類のアルファベット順のリストを取得するためにリフレクションを使用してテストコンソールアプリケーション書いている:今、私は必要なものC#とリフレクション
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
using MyNamespace; // Contains the API class
namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Hi");
API api = new API(1234567890, "ABCDEFGHI");
Type type = api.GetType();
PropertyInfo[] props = type.GetProperties(BindingFlags.Public);
// Sort properties alphabetically by name.
Array.Sort(props, delegate(PropertyInfo p1, PropertyInfo p2) {
return p1.Name.CompareTo(p2.Name);
});
// Display a list of property names and types.
foreach (PropertyInfo propertyInfo in type.GetProperties())
{
Console.WriteLine("{0} [type = {1}]", propertyInfo.Name, propertyInfo.PropertyType);
}
}
}
}
をすべてのプロパティとconcatsをループ方法であり、それらの値は一緒にクエリー・ストリングになります。問題は、これをAPIクラス自体の関数(可能な場合)にすることです。静的コンストラクタがこの問題を解決するための何かを持っているかどうか疑問に思っていますが、私は数日間C#で作業していましたが、それを把握することはできませんでした。
ご意見、ご提案、またはコードサンプルをお待ちしております。
私が必要とまさに何が - ありがとうございました! もう一つ質問:私は次のことを示唆した以前のStackOverflowの質問に出くわした:あなたは、特定の属性をサポートするすべてのタイプを見つけることが反映されている..when「 \t、 \tあなたがキャッシュを使用するのに最適な機会を持っています。つまり、実行時に \tのリフレクションを複数回使用する必要はありません。 \t これは私がやりたいことを説明しているようですが、ロード時にこれを行うにはどうすればよいかわかりません。助言がありますか? –
AspNycは、Mehrdadが記述したPrintApiメソッドの結果をArrayListやジェネリックバージョンList <>などのコレクションに格納するだけで、キャッシュを作成するだけです。あなたがコレクションまたはキャッシュを保存または保持する場所は、あなた次第です。照会したオブジェクトの内部または照会を開始したクライアント・コードの内部にある可能性があります。 –
パーフェクト - ありがとう! –