001package com.ericlam.mc.eld.managers;
002
003import com.ericlam.mc.eld.misc.ArgParser;
004
005/**
006 * 參數解析管理器
007 * @param <Sender> 平台所屬指令發送者類型
008 */
009public interface ArgumentManager<Sender> {
010
011    /**
012     * 註冊參數解析
013     * @param parser 要解析的類型
014     * @param getter 解析器
015     * @param <T> 類型
016     */
017    <T> void registerParser(Class<T> parser, ArgParser<T, Sender> getter);
018
019    /**
020     * 註冊有標識文字的參數解析
021     * @param parser 要解析的類型
022     * @param identifier 標識文字
023     * @param getter 解析器
024     * @param <T> 類型
025     */
026    <T> void registerParser(Class<T> parser, String identifier, ArgParser<T, Sender> getter);
027
028}