2011-11-21 63 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