/// <Summary>
/// Read-Only cache assistance
/// </Summary>
/// <Typeparam name = "keytype"> Key type </Typeparam>
/// <Typeparam name = "valuetype"> Value Type </Typeparam>
Public Static Class Cache < Keytype, valuetype >
{
Public Delegate Valuetype getvalue (keytype key );
Private Static Dictionary < Keytype, valuetype > Data = New Dictionary < Keytype, valuetype > ();
/// <Summary>
/// Obtain cached data
/// </Summary>
/// <Param name = "key"> Key </Param>
/// <Param name = "get"> Lambda expression, which is the delegate of a value when the cache does not exist. </Param>
/// <Returns> </returns>
Public Static Valuetype get (keytype key, getvalue Get )
{
If (Data. containskey (key ))
Return Data [Key];
Else
{
Valuetype Value = Get (Key );
Data. Add (Key, value );
Return Value;
}
}
}
/// <Summary>
/// Read-Only cache assistance
/// </Summary>
/// <Typeparam name = "keytype"> Key type </Typeparam>
/// <Typeparam name = "valuetype"> Value Type </Typeparam>
Public Static Class Cache < Keytype, valuetype >
{
Public Delegate Valuetype getvalue (keytype key );
Private Static Dictionary < Keytype, valuetype > Data = New Dictionary < Keytype, valuetype > ();
/// <Summary>
/// Obtain cached data
/// </Summary>
/// <Param name = "key"> Key </Param>
/// <Param name = "get"> Lambda expression, which is the delegate of a value when the cache does not exist. </Param>
/// <Returns> </returns>
Public Static Valuetype get (keytype key, getvalue Get )
{
If (Data. containskey (key ))
Return Data [Key];
Else
{
Valuetype Value = Get (Key );
Data. Add (Key, value );
Return Value;
}
}
}
Example:
Reflection of all attributes of the mymodel object and caching
Propertyinfo [] myproperty = cache <type, propertyinfo []>. Get (typeof (mymodel), P => P. getproperties ());
Public Static Class Cachehelpr < Keytype, valuetype >
{
Public Delegate Valuetype getvalue (keytype key );
Private Static Dictionary < Keytype, valuetype > Data = New Dictionary < Keytype, valuetype > ();
Public Static Valuetype get (keytype key, getvalue Get )
{
If (Data. containskey (key ))
Return Data [Key];
Else
{
Valuetype Value = Get (Key );
Data. Add (Key, value );
Return value;
}< BR >}