Add to check Null value
Signed-off-by: huiyu.eun <huiyu.eun@samsung.com>
if (propertyName != XmlName.Empty || TryGetPropertyName(node, parentNode, out propertyName)) {
if (Skips.Contains(propertyName))
return;
if (propertyName != XmlName.Empty || TryGetPropertyName(node, parentNode, out propertyName)) {
if (Skips.Contains(propertyName))
return;
+ if (parentElement == null)
+ return;
if (parentElement.SkipProperties.Contains(propertyName))
return;
if (parentElement.SkipProperties.Contains(propertyName))
return;
if (value.GetType().GetTypeInfo().GetCustomAttribute<AcceptEmptyServiceProviderAttribute>() == null)
serviceProvider = new XamlServiceProvider(node, Context);
if (value.GetType().GetTypeInfo().GetCustomAttribute<AcceptEmptyServiceProviderAttribute>() == null)
serviceProvider = new XamlServiceProvider(node, Context);
- if (serviceProvider != null && propertyName != XmlName.Empty)
+ if (serviceProvider != null && serviceProvider.IProvideValueTarget != null && propertyName != XmlName.Empty)
((XamlValueTargetProvider)serviceProvider.IProvideValueTarget).TargetProperty = GetTargetProperty(source, propertyName, Context, node);
if (markupExtension != null)
((XamlValueTargetProvider)serviceProvider.IProvideValueTarget).TargetProperty = GetTargetProperty(source, propertyName, Context, node);
if (markupExtension != null)
if (addMethod == null)
return false;
if (addMethod == null)
return false;
- if (serviceProvider != null)
+ if (serviceProvider != null && serviceProvider.IProvideValueTarget != null)
((XamlValueTargetProvider)serviceProvider.IProvideValueTarget).TargetProperty = targetProperty;
addMethod.Invoke(collection, new [] { value.ConvertTo(addMethod.GetParameters() [0].ParameterType, (Func<TypeConverter>)null, serviceProvider) });
((XamlValueTargetProvider)serviceProvider.IProvideValueTarget).TargetProperty = targetProperty;
addMethod.Invoke(collection, new [] { value.ConvertTo(addMethod.GetParameters() [0].ParameterType, (Func<TypeConverter>)null, serviceProvider) });
INode node;
if (!enode.Properties.TryGetValue(name, out node))
{
INode node;
if (!enode.Properties.TryGetValue(name, out node))
{
- throw new XamlParseException(
- String.Format("The Property {0} is required to create a {1} object.", propname, ctorInfo.DeclaringType.FullName),
- enode as IXmlLineInfo);
+ String msg = "";
+ if (propname != null)
+ {
+ msg = String.Format("The Property {0} is required to create a {1} object.", propname, ctorInfo.DeclaringType.FullName);
+ }
+ else
+ {
+ msg = "propname is null.";
+ }
+ throw new XamlParseException(msg, enode as IXmlLineInfo);
}
if (!enode.SkipProperties.Contains(name))
enode.SkipProperties.Add(name);
}
if (!enode.SkipProperties.Contains(name))
enode.SkipProperties.Add(name);
throw new Exception("Expression did not end in '}'");
var parser = Activator.CreateInstance(GetType()) as IExpressionParser;
throw new Exception("Expression did not end in '}'");
var parser = Activator.CreateInstance(GetType()) as IExpressionParser;
- return parser.Parse(match, ref expression, serviceProvider);
+ return parser?.Parse(match, ref expression, serviceProvider);
}
internal static bool MatchMarkup(out string match, string expression, out int end)
}
internal static bool MatchMarkup(out string match, string expression, out int end)
throw new XamlParseException($"Can't resolve {name} on {type.Name}", lineinfo);
var bp = bpinfo.GetValue(null) as BindableProperty;
var isObsolete = bpinfo.GetCustomAttribute<ObsoleteAttribute>() != null;
throw new XamlParseException($"Can't resolve {name} on {type.Name}", lineinfo);
var bp = bpinfo.GetValue(null) as BindableProperty;
var isObsolete = bpinfo.GetCustomAttribute<ObsoleteAttribute>() != null;
- if (bp.PropertyName != propertyName && !isObsolete)
+ if (bp != null && bp.PropertyName != propertyName && !isObsolete)
throw new XamlParseException($"The PropertyName of {type.Name}.{name} is not {propertyName}", lineinfo);
return bp;
}
throw new XamlParseException($"The PropertyName of {type.Name}.{name} is not {propertyName}", lineinfo);
return bp;
}
- if (property.CanRead && property.GetMethod.IsPublic && !property.GetMethod.IsStatic)
- part.LastGetter = property.GetMethod;
- if (property.CanWrite && property.SetMethod.IsPublic && !property.SetMethod.IsStatic)
+ if (property.CanRead && property.GetMethod != null)
- part.LastSetter = property.SetMethod;
- part.SetterType = part.LastSetter.GetParameters().Last().ParameterType;
-
- if (Binding.AllowChaining)
+ if (property.GetMethod.IsPublic && !property.GetMethod.IsStatic)
+ part.LastGetter = property.GetMethod;
+ }
+ if (property.CanWrite && property.SetMethod != null)
+ {
+ if(property.SetMethod.IsPublic && !property.SetMethod.IsStatic)
- FieldInfo bindablePropertyField = sourceType.GetDeclaredField(part.Content + "Property");
- if (bindablePropertyField != null && bindablePropertyField.FieldType == typeof(BindableProperty) && sourceType.ImplementedInterfaces.Contains(typeof(IElementController)))
+ part.LastSetter = property.SetMethod;
+ part.SetterType = part.LastSetter.GetParameters().Last().ParameterType;
+
+ if (Binding.AllowChaining)
- MethodInfo setValueMethod = null;
-#if NETSTANDARD1_0
- foreach (MethodInfo m in sourceType.AsType().GetRuntimeMethods())
+ FieldInfo bindablePropertyField = sourceType.GetDeclaredField(part.Content + "Property");
+ if (bindablePropertyField != null && bindablePropertyField.FieldType == typeof(BindableProperty) && sourceType.ImplementedInterfaces.Contains(typeof(IElementController)))
- if (m.Name.EndsWith("IElementController.SetValueFromRenderer"))
+ MethodInfo setValueMethod = null;
+#if NETSTANDARD1_0
+ foreach (MethodInfo m in sourceType.AsType().GetRuntimeMethods())
- ParameterInfo[] parameters = m.GetParameters();
- if (parameters.Length == 2 && parameters[0].ParameterType == typeof(BindableProperty))
+ if (m.Name.EndsWith("IElementController.SetValueFromRenderer"))
- setValueMethod = m;
- break;
+ ParameterInfo[] parameters = m.GetParameters();
+ if (parameters.Length == 2 && parameters[0].ParameterType == typeof(BindableProperty))
+ {
+ setValueMethod = m;
+ break;
+ }
- setValueMethod = typeof(IElementController).GetMethod("SetValueFromRenderer", new[] { typeof(BindableProperty), typeof(object) });
+ setValueMethod = typeof(IElementController).GetMethod("SetValueFromRenderer", new[] { typeof(BindableProperty), typeof(object) });
- if (setValueMethod != null)
- {
- part.LastSetter = setValueMethod;
- part.IsBindablePropertySetter = true;
- part.BindablePropertyField = bindablePropertyField.GetValue(null);
+ if (setValueMethod != null)
+ {
+ part.LastSetter = setValueMethod;
+ part.IsBindablePropertySetter = true;
+ part.BindablePropertyField = bindablePropertyField.GetValue(null);
+ }
- get { return _list.Count; }
+ get
+ {
+ lock (_list)
+ return _list.Count;
+ }
}
bool ICollection<T>.IsReadOnly
}
bool ICollection<T>.IsReadOnly
- ReadOnlyCollection<T> snap = _snapshot;
- if (snap != null)
- return snap[index];
-
+ {
+ ReadOnlyCollection<T> snap = _snapshot;
+ if (snap != null)
+ return snap[index];
+
try
{
Assembly refAsm = Assembly.Load(refName);
try
{
Assembly refAsm = Assembly.Load(refName);
- RegisterAssemblyRecursively(refAsm);
- if (refName.Name == "Xamarin.Forms.Core")
- if (refAsm.GetType("Xamarin.Forms.PlatformConfiguration.TizenSpecific.VisualElement") != null)
+ RegisterAssemblyRecursively(refAsm);
+ if (refName.Name == "Xamarin.Forms.Core")
- IsTizenSpecificAvailable = true;
+ if (refAsm.GetType("Xamarin.Forms.PlatformConfiguration.TizenSpecific.VisualElement") != null)
+ {
+ IsTizenSpecificAvailable = true;
+ }
});
/// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
});
/// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
- public static readonly BindableProperty LeftFocusableViewProperty = BindableProperty.Create("LeftFocusableView", typeof(View), typeof(View), default(View), propertyChanged: (bindable, oldValue, newValue) =>
+ public static readonly BindableProperty LeftFocusableViewProperty = BindableProperty.Create(nameof(View.LeftFocusableView), typeof(View), typeof(View), default(View), propertyChanged: (bindable, oldValue, newValue) =>
{
var view = (View)bindable;
{
var view = (View)bindable;
- if (newValue != null) { view.LeftFocusableViewId = (int)(newValue as View).GetId(); }
+ if (newValue != null) { view.LeftFocusableViewId = (int)(newValue as View)?.GetId(); }
else { view.LeftFocusableViewId = -1; }
},
defaultValueCreator:(bindable) =>
else { view.LeftFocusableViewId = -1; }
},
defaultValueCreator:(bindable) =>
});
/// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
});
/// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
- public static readonly BindableProperty RightFocusableViewProperty = BindableProperty.Create("RightFocusableView", typeof(View), typeof(View), default(View), propertyChanged: (bindable, oldValue, newValue) =>
+ public static readonly BindableProperty RightFocusableViewProperty = BindableProperty.Create(nameof(View.RightFocusableView), typeof(View), typeof(View), default(View), propertyChanged: (bindable, oldValue, newValue) =>
{
var view = (View)bindable;
{
var view = (View)bindable;
- if (newValue != null) { view.RightFocusableViewId = (int)(newValue as View).GetId(); }
+ if (newValue != null) { view.RightFocusableViewId = (int)(newValue as View)?.GetId(); }
else { view.RightFocusableViewId = -1; }
},
defaultValueCreator:(bindable) =>
else { view.RightFocusableViewId = -1; }
},
defaultValueCreator:(bindable) =>
});
/// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
});
/// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
- public static readonly BindableProperty UpFocusableViewProperty = BindableProperty.Create("UpFocusableView", typeof(View), typeof(View), default(View), propertyChanged: (bindable, oldValue, newValue) =>
+ public static readonly BindableProperty UpFocusableViewProperty = BindableProperty.Create(nameof(View.UpFocusableView), typeof(View), typeof(View), default(View), propertyChanged: (bindable, oldValue, newValue) =>
{
var view = (View)bindable;
{
var view = (View)bindable;
- if (newValue != null) { view.UpFocusableViewId = (int)(newValue as View).GetId(); }
+ if (newValue != null) { view.UpFocusableViewId = (int)(newValue as View)?.GetId(); }
else { view.UpFocusableViewId = -1; }
},
defaultValueCreator:(bindable) =>
else { view.UpFocusableViewId = -1; }
},
defaultValueCreator:(bindable) =>
});
/// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
});
/// This will be public opened in tizen_5.0 after ACR done. Before ACR, need to be hidden as inhouse API.
[EditorBrowsable(EditorBrowsableState.Never)]
- public static readonly BindableProperty DownFocusableViewProperty = BindableProperty.Create("DownFocusableView", typeof(View), typeof(View), default(View), propertyChanged: (bindable, oldValue, newValue) =>
+ public static readonly BindableProperty DownFocusableViewProperty = BindableProperty.Create(nameof(View.DownFocusableView), typeof(View), typeof(View), default(View), propertyChanged: (bindable, oldValue, newValue) =>
{
var view = (View)bindable;
{
var view = (View)bindable;
- if (newValue != null) { view.DownFocusableViewId = (int)(newValue as View).GetId(); }
+ if (newValue != null) { view.DownFocusableViewId = (int)(newValue as View)?.GetId(); }
else { view.DownFocusableViewId = -1; }
},
defaultValueCreator:(bindable) =>
else { view.DownFocusableViewId = -1; }
},
defaultValueCreator:(bindable) =>