我使用Gettype().Name
来获取我的班级名称。当我执行代码时,它确实给了我类名,但添加了像SavingsAccount_32335C302A2DED6EFF6B9AFA5B79FC440AFD57B29E5123233712CE7F0C5646BF
这样的垃圾值作为输出。
我的支票账户也是如此。有关像SavingAccount
答案 0 :(得分:0)
EF代理类型后缀也可以使用System.Linq
和Guid.TryParse
Guid guid;
string typeName = string.Join("_", type.Name.Split('_')
.Where(pt => !Guid.TryParseExact(new string(pt.Take(32).ToArray()), "N", out guid)));
答案 1 :(得分:-1)
1)使用
string myType = myClass.GetType().ToString();
string[] parts = myType.Split('_');
if(myType.Length>{X}&&parts.Length>0)//add RegEx GUID test to be sure
{
string myClassName = "";
for(int I=0;i<parts.Length-1;i++){
myClassName+= parts[I];
if(I<parts.Length-1)
myClassName+="_";
}
}
如果'X'&gt;比方说35,这适用于每个长度不超过35个字符的班级。如果需要过滤掉长类名,请使用RegEx添加GUID测试。
2)由于您遇到此问题,请勿在其他类中使用下划线。
3)如果附加组件是GUID(或者它总是具有相同的位数),则测试长度并删除最后的X位数(如果类名称很长并且包含下划线)。
4)使用RegEx测试guid https://www.google.com/search?q=regex+guid+test&ie=&oe=#q=regex+guid+test+c-sharp
5)维护一个类列表并测试IndexOf