我需要发现EF POCO代理; MSDN提供了一些基于ObjectContext.GetObjectType(type.GetType())
但是,如果没有EF参考,我真的很想这样做。例如,使用NHibernate,我可以使用名称(作为字符串)"NHibernate.Proxy.INHibernateProxy"
来检查对象是否实现了标记接口。
EF POCO代理中是否有类似内容?例如,我可以依赖将它们放在命名空间System.Data.Entity.DynamicProxies.
中,还是那么脆弱?
看一下反射器内部,它只是检查组件与内部跟踪的组件,这对我来说是个问题。
答案 0 :(得分:3)
检查引擎盖,作为实现细节确实如此,在当前的EF中,类型将始终存在于“System.Data.Entity.DynamicProxies”中。这可能不是一个强大的测试,但应该不经常更改。不过,我会尝试向微软澄清这一点。
答案 1 :(得分:1)
我知道名为此模式的POCO代理类型UserDefinedName_123AF...
。
那么这种方法怎么样?
const string pattern = @"_[\dA-F]{64}\b";
Regex regex = new Regex(pattern);
bool result = regex.IsMatch(tragetObject.GetType().Name);