2011-11-21 59 views
2

我有一个由NHibernate实现并使用Lazy Loading的项目。当然,已经在两个项目中实现了:一个是NHibernate实现项目,另一个是域实现项目。我在域项目中的实体通过这个名字:什么是GetType()的替代方法名称:用于从名称末尾删除代理

Public Person : EntityBase 
{ 

} 

我通过这段代码加载一个实体:

TEntity entity = SessionInstance.Load<TEntity>(110); 

在我的域名项目中使用该实体的这段代码:

string strName = entity.GetType().Name; 
if(strName == "Person") 
{ 
    //My Code 
} 

问题就在这里。 则strName在某个阶段是“人”,这是正确的,但有时则strName “PersonProxy”

我该怎么办?

回答

2

你这样做是为了避免硬编码Person字符串吗?如果是的话,我会做到以下几点:

typeof(Person).Name 

如果它需要是动态的,也许这将工作

public String GetDomainName(Type type) 
    { 
     var isNotFromDomain = type.Namespace != typeof(Person).Namespace; 
     if (isNotFromDomain) 
      return GetDomainName(type.BaseType); 
     return type.Name; 
    } 

最后,基于更新后的代码,我建议你考虑下。我喜欢避免硬编码的字符串。

if (entity is Person) 
{ 
    //My Code 
} 
+0

@lain我编辑我的问题。我的方法是加载一个实体,而不是一个人。感谢您的通知! – Ehsan

+0

@Ehsan:第二种方法应该可以工作。我假定代理名称空​​间与域名空间不同。我对代理人不太了解。 – Iain