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数据服务犯规让下划线的名字,我得到“名称”属性是无效的错误。
有没有人遇到过这个?我如何更改通用基类型的名称?