2014-10-07 40 views
0

當我面對一個很奇怪的問題,同時創造與NHibernate 3.0古怪的名稱中使用泛型類

這是我的,我要公開的數據服務的一部分,具體類WCF數據服務

public class PayeeType : LookupIdentifierType<int, CamConnect.Entities.DomainEntities.Lookup.PayeeType, PayeeTypeIdentifiers> 
{ 
    public virtual String TypeName { get; set; } 
} 

這是基類(通用)定義

[IgnoreProperties("Identifier")] 
public abstract class LookupIdentifierType<TId, TDto, TIdentifier> 
{ 
    public virtual TIdentifier Identifier 
    { 
     get 
     { 
      return (TIdentifier)Enum.Parse(typeof(TIdentifier), Id.ToString()); 
     } 
     //set 
     //{ 
     // String idString = (Convert.ChangeType(value, value.GetTypeCode())).ToString(); 
     // Id = Int32.Parse(idString) as TId; 
     //} 
     set 
     { 
      //String idString = (Convert.ChangeType(value, value.GetTypeCode())).ToString(); 
      Id = (TId)Convert.ChangeType(value, typeof(TId)); 
     } 
    } 

    public virtual String IdentifierText 
    { 
     get { return Enum.GetName(typeof(TIdentifier), Identifier); } 
     set 
     { 
      System.Globalization.TextInfo myTI = new System.Globalization.CultureInfo("en-US", false).TextInfo;     
      TIdentifier temp;     
      bool success = Enum.TryParse<TIdentifier>(value, true, out temp); 
      if (!success) Enum.TryParse<TIdentifier>(myTI.ToTitleCase(value).Replace(" ",""), true, out temp); 
      Identifier = temp; 
     } 
    } 

    public static TReturn GetForIdentifier<TReturn>(TIdentifier identifier) where TReturn : class, ILookupIdentifierType<TIdentifier> 
    { 
     Type constructedType = typeof(TReturn); 
     ILookupIdentifierType<TIdentifier> returnObj = Activator.CreateInstance(constructedType) as ILookupIdentifierType<TIdentifier>; 
     returnObj.Identifier = identifier; 
     return returnObj as TReturn; 
    } 
} 

現在,當我看到服務元數據,我得到很奇怪的名字我的基本類型

<Schema Namespace="Entities.Entities.Lookup" 
    xmlns="http://schemas.microsoft.com/ado/2006/04/edm"> 
<EntityType Name="PayeeType" 
    BaseType="Entities.Entities.Lookup.LookupIdentifierType 
    _x0060_3_x005B_System.Int32_x0020_.Entities.DomainEntities.Lookup. 
    PayeeType_x0020.Entities.Identifiers.PayeeTypeIdentifiers_x005D_" /> 

這將導致添加引用功能失效的原因(據我所知)WCF數據服務犯規讓下劃線的名字,我得到「名稱」屬性是無效的錯誤。

有沒有人遇到過這個?我如何更改通用基類型的名稱?

回答