public void Initialize <TOwner>(TOwner instance, IDataSetProvider provider, string propName) { if (Owner != null && Property != null) { return; } Owner = new PropertyOwner <TOwner>(instance); var parameter = Parameter.Get(provider); var knownType = KnownType.GetKnownType(typeof(TOwner)); if (knownType != null) { bool isParametrized = parameter != null && !Constant; var type = isParametrized ? parameter.GetHoldType().Type : _localValue.HoldType.Type; Property = knownType.GetProperty <TOwner>(type, propName); if (_localValue == null) { _localValue = new Variant(type); } if (Constant) { Owner.CallSetter(Property, isParametrized ? parameter.Value : _localValue); } } }
public IValue CreateValue() { #if UNITY_EDITOR var knownType = KnownType.GetKnownType(HoldType.Type); if (knownType != null) { return(knownType.CreateValue(this)); } else { Debug.LogErrorFormat("Known type for {0} not found! Unable to crate IValue.", HoldType.Type); return(null); } #else return(GetKnownType(HoldType.Type).CreateValue(this)); #endif }
public void Initialize <TOwner>(TOwner instance, string propName) { if (Owner != null && Property != null) { return; } Owner = new PropertyOwner <TOwner>(instance); var knownType = KnownType.GetKnownType(typeof(TOwner)); if (knownType != null) { Property = knownType.GetProperty <TOwner>(Parameter.HoldType.Type, propName); if (Constant) { Owner.CallSetter(Property, Parameter); } } }