in SharpGen/Transform/PropertyBuilder.cs [36:70]
private CsProperty CreatePropertyFromMethodGroup(IGrouping<string, CsMethod> group)
{
var getters = group.Where(method => GetPropertySpec(method).PropertyMethod == PropertyMethod.Getter).ToList();
var setters = group.Where(method => GetPropertySpec(method).PropertyMethod == PropertyMethod.Setter).ToList();
if (getters.Count == 0 && setters.Count == 0)
return null;
if (getters.Count > 1 || setters.Count > 1)
return null;
var getter = getters.Count == 0 ? null : getters[0];
var setter = setters.Count == 0 ? null : setters[0];
if (!ValidateGetter(getter) || !ValidateSetter(setter))
return null;
var isParamGetter = getter != null && getter.Parameters.Count == 1;
var getterPropType = isParamGetter ? getter.Parameters[0].PublicType : getter?.ReturnValue.PublicType;
var setterPropType = setter?.Parameters[0].PublicType;
if (getterPropType != null && setterPropType != null && getterPropType != setterPropType)
return null;
// Associate the property with the underlying method's C++ element.
var cppElement = getter?.CppElement ?? setter?.CppElement;
if (isParamGetter)
isParamGetter = !getter.Parameters[0].UsedAsReturn;
return new CsProperty(ioc, (CppMethod) cppElement, group.Key, getter, setter, isParamGetter)
{
PublicType = getterPropType ?? setterPropType
};
}