func addDot(l dot.Line) {
	_ = l.ToInjecter().ReplaceOrAddByType(&Dot1{Name: "null"})
	_ = l.ToInjecter().ReplaceOrAddByLiveID(&Dot1{Name: "6666"}, dot.LiveID("6666"))
}
Add assigned type to container directly
package main
import (
	"encoding/json"
	"os"
	"reflect"
	"github.com/scryinfo/dot/dot"
	"github.com/scryinfo/dot/dots/line"
	"github.com/scryinfo/scryg/sutils/ssignal"
)
func main() {
	l, err := line.BuildAndStart(add)  
	if err != nil {
		dot.Logger().Errorln(err.Error())
		return
	}
	defer line.StopAndDestroy(l, true)  
	dot.Logger().Infoln("dot ok")
	t := &SomeUse{}
	l.InfoAllTypeAdnLives()
	_ = l.ToInjecter().Inject(t)                     
	_ = dot.GetDefaultLine().ToInjecter().Inject(t)  
	ssignal.WaitCtrlC(func(s os.Signal) bool {  
		return false
	})
}
func add(l dot.Line) error {
	var err error
	{
		t := reflect.TypeOf((*Dot1)(nil))
		t = t.Elem()
		err = l.PreAdd(&dot.TypeLives{
			Meta: dot.Metadata{TypeID: "1", RefType: t}, Lives: []dot.Live{
				{LiveID: "1"},
			},
		})
		err = l.PreAdd(&dot.TypeLives{
			Meta: dot.Metadata{TypeID: "1", NewDoter: func(conf []byte) (dot dot.Dot, err error) {
				return &Dot1{Name: "Create by type 1"}, nil
			}},
		})
	}
	{
		t := reflect.TypeOf((*Dot2)(nil))
		t = t.Elem()
		err = l.PreAdd(&dot.TypeLives{
			Meta: dot.Metadata{TypeID: "2", RefType: t}, Lives: []dot.Live{
				{LiveID: "21"}, {LiveID: "22"},
			},
		})
	}
	{  
		err = l.AddNewerByLiveID(dot.LiveID("31"), func(conf []byte) (d dot.Dot, err error) {
			d = &Dot3{}
			err = nil
			t := reflect.ValueOf(conf)
			if t.Kind() == reflect.Slice || t.Kind() == reflect.Array {
				if t.Len() > 0 && t.Index(0).Kind() == reflect.Uint8 {
					v := t.Slice(0, t.Len())
					err = json.Unmarshal(v.Bytes(), d)
				}
			} else {
				err = dot.SError.Parameter
			}
			return
		})
		err = l.AddNewerByLiveID(dot.LiveID("32"), func(conf []byte) (d dot.Dot, err error) {
			d = &Dot3{}
			err = nil
			t := reflect.ValueOf(conf)
			if t.Kind() == reflect.Slice || t.Kind() == reflect.Array {
				if t.Len() > 0 && t.Index(0).Kind() == reflect.Uint8 {
					v := t.Slice(0, t.Len())
					err = json.Unmarshal(v.Bytes(), d)
				}
			} else {
				err = dot.SError.Parameter
			}
			return
		})
	}
	{  
		err = l.AddNewerByLiveID(dot.LiveID("41"), func(conf []byte) (d dot.Dot, err error) {
			d = &Dot4{}
			err = nil
			t := reflect.ValueOf(conf)
			if t.Kind() == reflect.Slice || t.Kind() == reflect.Array {
				if t.Len() > 0 && t.Index(0).Kind() == reflect.Uint8 {
					v := t.Slice(0, t.Len())
					err = json.Unmarshal(v.Bytes(), d)
				}
			} else {
				err = dot.SError.Parameter
			}
			return
		})
		err = l.AddNewerByTypeID(dot.TypeID("type_live"), func(conf []byte) (d dot.Dot, err error) {
			d = &Dot4{}
			err = nil
			t := reflect.ValueOf(conf)
			if t.Kind() == reflect.Slice || t.Kind() == reflect.Array {
				if t.Len() > 0 && t.Index(0).Kind() == reflect.Uint8 {
					v := t.Slice(0, t.Len())
					err = json.Unmarshal(v.Bytes(), d)
				}
			} else {
				err = dot.SError.Parameter
			}
			return
		})
	}
	return err
}