protected void SetFromObjectFieldElement(object target, IHeterogeneousConfigurationElement heterogeneousElem) { ObjectFieldElement value = (ObjectFieldElement)heterogeneousElem; PropertyInfo propertyInfo = target.GetType().GetProperty(value.Key); if (propertyInfo != null) { object result = ExtractObjectFieldValue(value); propertyInfo.SetValue(target, Convert.ChangeType(result, propertyInfo.PropertyType)); } }
public void BaseRefreshIdentitiesInBuilding() { HeterogeneousCollection identities = BIASettingsReader.BIANetSection?.Authentication?.Identities; if (identities != null && identities.Count > 0) { foreach (IHeterogeneousConfigurationElement heterogeneousElem in identities) { if (heterogeneousElem is ValueElement) { SetFromValueElement(identitiesInBuilding, heterogeneousElem); } else if (heterogeneousElem is WindowsIdentityElement) { WindowsIdentityElement value = (WindowsIdentityElement)heterogeneousElem; if (Identity != null && Identity.IsAuthenticated && value.IdentityField != null) { identitiesInBuilding.Set(value.Key, PreparePrincipalUserName(Identity, value.IdentityField, value.RemoveDomain), userInfoContainer); } } else if (heterogeneousElem is ObjectFieldElement) { ObjectFieldElement value = (ObjectFieldElement)heterogeneousElem; object result = ExtractObjectFieldValue(value); if (result != null) { identitiesInBuilding.Set(value.Key, result.ToString(), userInfoContainer); } } else if (heterogeneousElem.TagName == "CustomCode") { if (SetFromCustomCodeElement(identitiesInBuilding, heterogeneousElem)) { CustomCodeIdentities(identitiesInBuilding); } } else if (heterogeneousElem is ClientCertificateInHeaderCollection) { } else { throw new Exception("Tag " + heterogeneousElem.TagName + " not implemented for Authentication > Identities"); } } } }
protected virtual object ExtractObjectFieldValue(ObjectFieldElement value) { return(GetObjectValue(this, value.Source)); }