.net core singler 原理