"RemoteManagement1"から "RemoteManagementN"に簡略化された多くのクラスがあるとします。これらの各クラスにはstatic
プロパティがあり、使用するManagementClassのtypeof()
に基づいて更新する必要があります。Genericsを使用してこれを最適化することはできますか?
MyProgram.Run()内での使用を容易にするためにヘルパークラスを最適化する方法はありますか?より簡単に、私はアプリの小さな実装では、私はクラス名を3つの個別の時間を指定する必要があることを意味します。
クラス名がローカルで定義されたアセンブリと競合する可能性が高く、完全な名前空間で修飾する必要があります。ステートメントを使用するトップレベルはここでは実用的ではないかもしれません。
実際に私が使っている名前空間は、WMI's ROOT.CIMV2.Win32
とROOT.MICROSOFTEXCHANGEV2.Exchange
という名前空間です。
class MyProgram1
{
void Run()
{
AnnoyinglyLongNamespace.RemoteManagementClass1.MySpecialObject =
CreateSpecialObjectHelper(typeof(AnnoyinglyLongNamespace.
RemoteManagementClass1), "asdf");
foreach (var item in AnnoyinglyLongNamespace.
RemoteManagementClass1.GetItems())
{
}
}
SpecialObject CreateSpecialObjectHelper(Type type, string SomeText)
{
// Use reflection on type
// Extract attributes
// do stuff
return new SpecialObject(attribute list + sometext);
}
}
///////// ------ no code below this line can be modified --------------
namespace AnnoyinglyLongNamespace
{
class SpecialObject
{
public SpecialObject(string thing)
{ }
}
class RemoteManagementClass1 : System.ComponentModel.Component
{
public static SpecialObject MySpecialObject { get; set; }
public static string[] GetItems()
{
List<string> ddd = new List<string>();
return ddd.ToArray();
}
}
class RemoteManagementClass2 : System.ComponentModel.Component
{
public static SpecialObject MySpecialObject { get; set; }
public static string[] GetItems()
{
List<string> ddd = new List<string>();
return ddd.ToArray();
}
}
class RemoteManagementClass3 : System.ComponentModel.Component
{
public static SpecialObject MySpecialObject { get; set; }
public static string[] GetItems()
{
List<string> ddd = new List<string>();
return ddd.ToArray();
}
}
class RemoteManagementClassN : System.ComponentModel.Component
{
public static SpecialObject MySpecialObject { get; set; }
public static string[] GetItems()
{
List<string> ddd = new List<string>();
return ddd.ToArray();
}
}
}
すべてを静的にする理由はありますか? –
その静的コードは、MicrosoftのWMIコード生成ツールによって生成され、VS2010のWMIクラスによっても作成されます。 – LamonteCristo
これらの 'GetItems()'メソッドはすべて空の配列を返しますか? – stakx