私はDictionary
をキーとして列挙型の値をとり、オブジェクトを値として返します。オブジェクトコンストラクタには、非常に時間がかかり、多くのメモリを消費するメソッドを呼び出す必要があります。今のところ、必要なものが1つだけであっても、辞書内の各オブジェクトが作成されます。キーで指定されたオブジェクトのみを作成する方法はありますか?方法はActiveDirectorySearcher
に高価なメソッド呼び出しをそれぞれ有する5つのすべてDataPreparer
Sを、作成することオブジェクトの辞書を作成すると、指定したキーのオブジェクトのみが作成されます
private DataPreparer SetUpOuDataPreparer()
{
Scope = _activeDirectoryScope.Context;
var activeDirectorySearcher = new ActiveDirectorySearcher(
_activeDirectoryScope);
var ouDataPreparers = new Dictionary<QueryType, DataPreparer>
{
[OuComputers] = new DataPreparer
{
Data = activeDirectorySearcher.GetOuComputerPrincipals(),
Attributes = DefaultComputerAttributes
},
[OuGroups] = new DataPreparer
{
Data = activeDirectorySearcher.GetOuGroupPrincipals(
CancellationToken),
Attributes = DefaultGroupAttributes
},
[OuUsers] = new DataPreparer
{
Data = activeDirectorySearcher.GetOuUserPrincipals(),
Attributes = DefaultUserAttributes
},
[OuUsersDirectReports] = new DataPreparer
{
Data = activeDirectorySearcher.GetOuUsersDirectReports(
CancellationToken),
Attributes = DefaultUserDirectReportsAttributes
},
[OuUsersGroups] = new DataPreparer
{
Data = activeDirectorySearcher.GetOuUsersGroups(
CancellationToken),
Attributes = DefaultUserGroupsAttributes
}
};
return ouDataPreparers[QueryType];
}
。私はどういうわけかをまたはif/else
を使わずにQueryType
キーで指定して作成したいと考えています。私はより良い書式/スタイルのためにそれらをDictionary
に変更しました。
なぜすべてで辞書を使うのか?なぜswitch文を使ったファクトリメソッドメソッドだけではないのですか? –
@AntP私は、スイッチを避けたいと思っていた質問に言及しました。 –
私は、彼らがどのような "文体的な理由"か分かりませんが、仕事のための適切なツールがきれいに見えないので、あなたが必要とするオブジェクトのコレクションを作成するのはちょっと後ろのようです。 –