public void SetValue(object instance, PropertyInfo pi, object newvalue, CultureInfo culture = null) { var item = SmartReferenceFactory.Get(pi.PropertyType.GetGenericArguments()[0], (ID) newvalue); pi.SetValue(instance, item, null); }