我很想知道.NET是否支持在运行时对方法调用(或属性调用)进行任何形式的动态拦截.也就是说,您是否可以在没有静态编译信息(如接口(沿着CORBA DII(链接文本)或COM的IDispatch的行)的情况下拦截对象的调用.
如果没有,C#4.0中新的"动态类型对象"功能是否会在这方面有所帮助.
在运行时,如果引用的程序集无法加载,例如"强名称验证失败"(因为它是经过测试签名的),是否有办法从另一个实际签名的路径提供替换程序集?
我尝试订阅AppDomain.CurrentDomain.AssemblyResolve,但它没有被触发,因为"坏"程序集技术上存在,它只是无法加载.
在无法加载程序集时,是否存在提供回退程序集的通用方法?
我正在使用Roslyn的2012年9月CTP.
在ac#代码文档中获取未解析类型的最优雅方法是什么?例如.Type Guid需要System命名空间.目前我有这样的事情:
var semanticModel = (SemanticModel)document.GetSemanticModel();
var tree = (SyntaxTree)document.GetSyntaxTree();
//get unresolved types
var unresolvedTypes = tree.GetRoot().DescendantNodes().OfType<IdentifierNameSyntax>()
.Where(x => semanticModel.GetSymbolInfo(x).Symbol == null);
Run Code Online (Sandbox Code Playgroud)
使用IdentifierNameSyntax和GetSymbolInfo是否正确?
另外GetSymbolInfo和GetTypeInfo有什么区别,它们看起来和我非常相似.