首页 新闻 赞助 找找看

如何给一个属性加上一个方法:ToString()?

0
悬赏园豆:30 [已关闭问题]
<P>Public Class Class1<BR>&nbsp;&nbsp;&nbsp; Private mName As String = ""<BR>&nbsp;&nbsp;&nbsp; Property Name() As String<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Get<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Return mName<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Get<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set(ByVal value As String)<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mName = value<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End Set<BR>&nbsp;&nbsp;&nbsp; End Property<BR>End Class</P> <P>如果可以用:Class1.Name().Tostring()这个得到Name的名称:"Name"...</P> <P>也就是说如何给属性扩展一个方法:ToString()</P>
问题补充: 如:一个属性名为:Name 赋值时为:Name="没剑" 而我想要得到Name这个属性的名称:"Name",而不是得到"没剑"... 也就是想要得到属性的名称的字符串... 就好像是可以扩展成:Name.getName="Name" 其中的getName为自己写的方法... --- 萧寒 :你a.Name.GetType().Name得到的是string ---- 徐少侠 :我是想在做实体类哪里得到列名。。。 我找了是用特性来实现的,但是好像没有办法直接就取得属性的特性。。。 <FieldName("Message")> _ Public Property Message() As String Get Return mMessage End Get Set(ByVal value As String) mMessage = value End Set End Property 如果可以:t.Message().getName来取得"Message"的话就比较好点了 ----- 武眉博<活靶子.Net> -:你的这个方法好像没有办法像我上面说的哪样出取属性的“名称”,t.Message().getName,而你哪个是用"名称"来取和属性,如果是这样子的话就没有意义了
没剑的主页 没剑 | 菜鸟二级 | 园豆:430
提问于:2007-11-15 11:09
< >
分享
其他回答(9)
0
用反射吧 System.Reflection
niugm | 园豆:1685 (小虾三级) | 2007-11-15 11:17
0
属性不可能有方法,只有属性返回的值才能有方法 可以用反射技术得到所有属性的名称,例如使用Type.GetProperties()方法
魔都KK | 园豆:340 (菜鸟二级) | 2007-11-15 11:21
0
第一,Property实际上它本身就是一个或两个方法(getter/setter),那又如何能够给方法加上方法呢?这本身就错了。 第二,你的返回值不是已经是String了么?还转换什么啊?
电机拖动 | 园豆:1295 (小虾三级) | 2007-11-15 11:29
0
看了3遍,看懂了;原来是要属性的名称,而不是值。 a.Name.GetType().Name 即可。
suifei | 园豆:93 (初学一级) | 2007-11-15 12:46
0
在程序源码中已经明确知道要使用属性Name 那么还有必要去获得这个属性的名称吗? 功能要和应用场景结合,请问?你的这个功能什么时候有用?
徐少侠 | 园豆:293 (菜鸟二级) | 2007-11-15 16:29
0
如下代码 通过测试 using System; using System.Collections.Generic; using System.Reflection; public class MyClass { public string Name { get{return "xxx";} } public static void Main() { string name_for_name = string.Empty; RL(); Type t =typeof(MyClass); PropertyInfo pi = t.GetProperty("Name"); name_for_name = pi.Name; WL(name_for_name); RL(); } #region Helper methods private static void WL(object text, params object[] args) { Console.WriteLine(text.ToString(), args); } private static void RL() { Console.ReadLine(); } private static void Break() { System.Diagnostics.Debugger.Break(); } #endregion }
活靶子.Net | 园豆:515 (小虾三级) | 2007-11-15 17:28
0
如果你是需要从一个实体类中取得所有的列名,建议用下面的方法: PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(EntityType), filterAttributes); 这个方法可以去到所有的属性的一个集合,然后遍历这个集合,将在其中找出对应列的属性。(一般情况下,会使用PropertyDescriptor.GetCustomAttributes方法,然后判断其中是否包含特定的属性来判断是不是我们需要的属性) 呵呵,也不知道说的是不是你的问题。并且对于ORM不熟,因此不能给出完整的例子。请你再说详细一些你的需求。我好给出解决方案
Colin Han | 园豆:3041 (老鸟四级) | 2007-11-16 00:30
0
呵呵.NET3.5可以帮你实现,利用它的新特性。
黄铨 | 园豆:350 (菜鸟二级) | 2007-11-20 11:59
0
用 extension method(.NET 3.x)
小树爸爸 | 园豆:210 (菜鸟二级) | 2007-11-23 18:02
0
不要想得那么复杂,我在生成实体类的时候一般会从数据库生成一个列名的字段名称的列表. 我自己写了一个小工具,可以从数据库的注释生成中英文列名. 在这里下载 http://www.cnblogs.com/darkangle/archive/2007/07/29/835395.html
沙加 | 园豆:3680 (老鸟四级) | 2007-12-27 14:29
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册