//------------------------------------------------------------------------------ static public T GetSettingMetadata <T>(WeakReference weakContext, string settingName, string metadataName, T defaultValue) { if (String.IsNullOrEmpty(settingName)) { return(defaultValue); } IPluginContext context = (IPluginContext)weakContext.Target; object metadataValue; bool exists = context.TryGetSettingMetadata(settingName, metadataName, out metadataValue); if (!exists) { return(defaultValue); } try { return((T)metadataValue); } catch (InvalidCastException exc) { InternalConfiguration.PlatformHelper.Log(LogLevel.Warning, exc); var msg = String.Format("InvalidCastException when try to cast setting metadata '{0}'. Use default value instead.", metadataName); InternalConfiguration.PlatformHelper.Log(LogLevel.Warning, msg); } return(defaultValue); }