public void RecursiveAndCheckRef(ref ResolvableInfo info, bool isCreateWhenEmpty, out ResolvableBinder result) { if (IsSameRef(ref info)) { result = this; } else { if (NextRef == default) { if (isCreateWhenEmpty) { result = CreateResolvableRef(ref info, ref mTypeID); SetNextRef(result); } else { result = default; return; } } else { NextRef.RecursiveAndCheckRef(ref info, isCreateWhenEmpty, out result); } } }
public static void FillResolvableInfo(int id, ref IResolvableConfig item, out ResolvableInfo info) { info = new ResolvableInfo() { configID = id, aliasID = item.AliasID, interfaceID = item.InterfaceID, typeID = item.TypeID }; }
public static ResolvableBinder CreateResolvableRef(ref ResolvableInfo info, ref IntegerMapper <Type> typeIDMapper) { ResolvableBinder result = new ResolvableBinder(ref typeIDMapper) { alias = info.aliasID, interfaceType = info.interfaceID, insType = info.typeID }; return(result); }
public bool IsSameRef(ref ResolvableInfo info) { return(alias.Equals(info.aliasID) && (info.interfaceID == interfaceType) && (info.typeID == insType)); }