示例
IEnumrationResultModifier
此示例演示了如何使用 IEnumrationResultModifier
接口根据请求时间禁用资源。
using System; using System.Xml.Linq; using Citrix.DeliveryServices.ResourcesCommon.Customization.Contract; namespace StoreCustomization_Enumeration { public class EnumerationResultModifier : IEnumerationResultModifier { public string Modify(CustomizationContextData context, string valueToModify) { if (context != null && !IsTimeAcceptable(context.HttpContext.Timestamp)) { var document = XDocument.Parse(valueToModify); if (document.Root != null) { XNamespace ns = "http://citrix.com/delivery-services/2-0/resources"; var resources = document.Root.Descendants(ns + "resource"); foreach (var enabledElement in resources) { enabledElement.SetElementValue(ns + "enabled", "false"); } return document.ToString(); } } return valueToModify; } public bool RunExtendedValidation { get { return false; } } public bool ReturnOriginalValueOnFailure { get { return true; } } } }
IInputModifier
此示例演示了如何使用 IInputModifier
接口根据 AuthenticationType
添加新 AccessConditions
。
using System; using System.Collections.Generic; using Citrix.DeliveryServices.ResourcesCommon.Customization.Contract; namespace StoreCustomization_Input { public class InputModifier : IInputModifier { public bool RunExtendedValidation { get { return false; } } public bool ReturnOriginalValueOnFailure { get { return false; } } public void Modify(CustomizationContextData context, out FarmSetsContext farmSetsContext, out DeviceInfo deviceInfo, out AccessConditions accessConditions) { farmSetsContext = context.FarmSetsContext; deviceInfo = context.DeviceInfo; accessConditions = context.AccessConditions; if (context.UserIdentity.IsAuthenticated) { accessConditions = new AccessConditions(new List<string> { @"New_Apps_Access" }, @"AGFarm"); } } } }
ILaunchResultModifier
此示例演示了如何使用 ILaunchResultModifier
接口根据设备信息修改 ICAfile 中的属性。
using System; using Citrix.DeliveryServices.ResourcesCommon.Customization.Contract; namespace StoreCustomization_Launch { public class LaunchResultModifier : ILaunchResultModifier { public string Modify(CustomizationContextData context, string valueToModify) { const string colorKey = "DesiredColor"; const string newValue = "16"; if (context.DeviceInfo.DisplayWidth > 1024 && !string.IsNullOrEmpty(valueToModify)) { var indexOfKey = valueToModify.IndexOf(colorKey, StringComparison.OrdinalIgnoreCase); if (indexOfKey > 0) { var indexOfEndOfLine = valueToModify.IndexOf(Environment.NewLine, indexOfKey, StringComparison.OrdinalIgnoreCase); var oldKeyValuePair = valueToModify.Substring(indexOfKey, (indexOfEndOfLine - indexOfKey)); var newKeyValuePair = string.Format("{0}={1}", colorKey, newValue); valueToModify = valueToModify.Replace(oldKeyValuePair, newKeyValuePair); } } return valueToModify; } public bool RunExtendedValidation { get { return false; } } public bool ReturnOriginalValueOnFailure { get { return true; } } } }