如果我写:vartype=typeof(List);Console.WriteLine(type.Name);它将写:List`1我希望它只写:List我该怎么做?有没有更聪明的方法来做到这一点而不必使用Substring或类似的字符串操作函数? 最佳答案 不,在名称中包含通用元数是非常有意义的-因为它是使名称唯一的部分(当然还有程序集和命名空间)。这样说:System.Nullable和System.Nullable是非常不同的类型。预计您不会想混淆这两者...因此,如果您想丢失信息,您将不得不努力做到这一点。当然,这并不难,可以
如果我写:vartype=typeof(List);Console.WriteLine(type.Name);它将写:List`1我希望它只写:List我该怎么做?有没有更聪明的方法来做到这一点而不必使用Substring或类似的字符串操作函数? 最佳答案 不,在名称中包含通用元数是非常有意义的-因为它是使名称唯一的部分(当然还有程序集和命名空间)。这样说:System.Nullable和System.Nullable是非常不同的类型。预计您不会想混淆这两者...因此,如果您想丢失信息,您将不得不努力做到这一点。当然,这并不难,可以
假设我有一个名为Test的类,它有一个名为Title的属性和一个自定义属性:publicclassTest{[DatabaseField("title")]publicstringTitle{get;set;}}还有一个名为DbField的扩展方法。我想知道在C#中是否甚至可以从对象实例获取自定义属性。Testt=newTest();stringfieldName=t.Title.DbField();//fieldNamewillequal"title",thesamenamepassedintotheattributeabove这可以做到吗? 最佳答案
假设我有一个名为Test的类,它有一个名为Title的属性和一个自定义属性:publicclassTest{[DatabaseField("title")]publicstringTitle{get;set;}}还有一个名为DbField的扩展方法。我想知道在C#中是否甚至可以从对象实例获取自定义属性。Testt=newTest();stringfieldName=t.Title.DbField();//fieldNamewillequal"title",thesamenamepassedintotheattributeabove这可以做到吗? 最佳答案
我正在使用反射来打印方法签名,例如foreach(varpiinmi.GetParameters()){Console.WriteLine(pi.Name+":"+pi.ParameterType.ToString());}这工作得很好,但它打印出原语类型为“System.String”而不是“string”和“System.Nullable`1[System.Int32]”而不是“int?”。有没有办法获取参数在代码中的名称,例如publicExample(stringp1,int?p2)打印p1:stringp2:int?代替p1:System.Stringp2:System.Nu
我正在使用反射来打印方法签名,例如foreach(varpiinmi.GetParameters()){Console.WriteLine(pi.Name+":"+pi.ParameterType.ToString());}这工作得很好,但它打印出原语类型为“System.String”而不是“string”和“System.Nullable`1[System.Int32]”而不是“int?”。有没有办法获取参数在代码中的名称,例如publicExample(stringp1,int?p2)打印p1:stringp2:int?代替p1:System.Stringp2:System.Nu
给定一个对象,我如何判断该对象是否具有虚拟属性?varentity=repository.GetByID(entityId);我尝试查看:PropertyInfo[]properties=entity.GetType().GetProperties();但无法辨别是否有任何属性表示虚拟。 最佳答案 PropertyInfo[]properties=entity.GetType().GetProperties().Where(p=>p.GetMethod.IsVirtual).ToArray();或者,对于.NET4及以下版本:Pro
给定一个对象,我如何判断该对象是否具有虚拟属性?varentity=repository.GetByID(entityId);我尝试查看:PropertyInfo[]properties=entity.GetType().GetProperties();但无法辨别是否有任何属性表示虚拟。 最佳答案 PropertyInfo[]properties=entity.GetType().GetProperties().Where(p=>p.GetMethod.IsVirtual).ToArray();或者,对于.NET4及以下版本:Pro
更新:我已在MicrosoftConnect上提交错误报告:https://connect.microsoft.com/VisualStudio/feedback/details/568271/debugger-halting-on-exception-thrown-inside-methodinfo-invoke#details如果你能在你的机器上重现这个问题,请给这个错误投票,这样它就可以被修复了!好的,我已经进行了一些测试,并将问题简化为非常简单的事情:我。在抛出异常的新类中创建一个方法:publicclassClass1{publicvoidCallMe(){stringbla
更新:我已在MicrosoftConnect上提交错误报告:https://connect.microsoft.com/VisualStudio/feedback/details/568271/debugger-halting-on-exception-thrown-inside-methodinfo-invoke#details如果你能在你的机器上重现这个问题,请给这个错误投票,这样它就可以被修复了!好的,我已经进行了一些测试,并将问题简化为非常简单的事情:我。在抛出异常的新类中创建一个方法:publicclassClass1{publicvoidCallMe(){stringbla