public class EventPartnerStatueTokenExchangeArcContext : IEventPartnerTokenExchangeContext { private EventPartnerStatueArc _arc; public string RedPointKey => _arc != null ? _arc.GetRedPointKey() : string.Empty; public int TicketCount => _arc?.Model != null ? _arc.Model.TicketCount : 0; public int TicketItemId => _arc?.TableContext != null ? _arc.TableContext.GetTicketId() : 0; public float LureInflationRate => _arc?.Model != null ? _arc.Model.LureInflationRate : 1f; public int TokenExchangeItemId => _arc?.TableContext != null ? _arc.TableContext.GetTokenExchangeItemId() : 0; public int TokenExchangeId => _arc?.TableContext != null ? _arc.TableContext.GetTokenExchangeId() : 0; public void BindArc(EventPartnerStatueArc arc) { _arc = arc; } public void AddTicket(int amount) { if (_arc?.Model == null) return; _arc.Model.AddTicket(amount); } } public interface IEventPartnerTokenExchangeContext { int TokenExchangeId { get; } string RedPointKey { get; } int TicketCount { get; } float LureInflationRate { get; } void AddTicket(int amount); int TokenExchangeItemId { get; } }