如何从gettype()。name中删除垃圾值?

时间:2016-10-05 00:47:31

标签: c# asp.net

我使用Gettype().Name来获取我的班级名称。当我执行代码时,它确实给了我类名,但添加了像SavingsAccount_32335C302A2DED6EFF6B9AFA5B79FC440AFD57B29E5123233712CE7F0C5646BF这样的垃圾值作为输出。 我的支票账户也是如此。有关像SavingAccount

这样的geeting类名称的任何帮助

2 个答案:

答案 0 :(得分:0)

EF代理类型后缀也可以使用System.LinqGuid.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