encontrando tipos derivados de um tipo especificado
Na programação, geralmente é necessário determinar todos os tipos derivados de um determinado tipo base. Tradicionalmente, isso foi alcançado através de técnicas trabalhosas, como iteração de todos os tipos em montagens carregadas e verificando manualmente a atribuibilidade ao tipo de destino. O snippet de código a seguir fornece uma maneira direta e executiva de realizar esta tarefa:
var listOfDerivedTypes = ( do domainassembly em appDomain.CurrentDomain.getAssemblies () do tipo em domainassembly.gettypes () onde tipeof (basetypeName) .isassignablefrom (type) select type).ToArray();
var listOfDerivedTypes = ( from domainAssembly in AppDomain.CurrentDomain.GetAssemblies() from type in domainAssembly.GetTypes() where typeof(BaseTypeName).IsAssignableFrom(type) select type).ToArray();Alternative Fluent Syntax:
The LINQ expression can also be written in a more fluent style for enhanced readability:
var listOfDerivedTypes = AppDomain.CurrentDomain.GetAssemblies() .SELECTMANY (DOMAINASTEMBLY => DOMAINAINMEMBLY.GETTYPES ()) . Onde (tipo => typeof (basetypeName) .isassignablefrom (type)) .TOArray ();
var listOfDerivedTypes = AppDomain.CurrentDomain.GetAssemblies() .SelectMany(domainAssembly => domainAssembly.GetTypes()) .Where(type => typeof(BaseTypeName).IsAssignableFrom(type)) .ToArray();personalizações:
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3