[已解决问题] 如何给一个属性加上一个方法:ToString()?
提问时间: 2007-11-15 11:09
悬赏分:30 浏览:533 次

Public Class Class1
    Private mName As String = ""
    Property Name() As String
        Get
            Return mName
        End Get
        Set(ByVal value As String)
            mName = value
        End Set
    End Property
End Class

如果可以用:Class1.Name().Tostring()这个得到Name的名称:"Name"...

也就是说如何给属性扩展一个方法:ToString()

提问者:没剑 - 菜鸟二级

问题补充:如:一个属性名为: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,而你哪个是用"名称"来取和属性,如果是这样子的话就没有意义了

所有回答(10)
用反射吧 System.Reflection
9个月前   回答者:Wilensky - 小虾三级
属性不可能有方法,只有属性返回的值才能有方法 可以用反射技术得到所有属性的名称,例如使用Type.GetProperties()方法
9个月前   回答者:狂人 - 菜鸟二级
第一,Property实际上它本身就是一个或两个方法(getter/setter),那又如何能够给方法加上方法呢?这本身就错了。 第二,你的返回值不是已经是String了么?还转换什么啊?
9个月前   回答者:坚持信念 - 小虾三级
看了3遍,看懂了;原来是要属性的名称,而不是值。 a.Name.GetType().Name 即可。
9个月前   回答者:萧寒 - 初学一级
在程序源码中已经明确知道要使用属性Name 那么还有必要去获得这个属性的名称吗? 功能要和应用场景结合,请问?你的这个功能什么时候有用?
9个月前   回答者:徐少侠 - 菜鸟二级
如下代码 通过测试 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 }
9个月前   回答者:武眉博<活靶子.Net> - 小虾三级
如果你是需要从一个实体类中取得所有的列名,建议用下面的方法: PropertyDescriptorCollection properties = TypeDescriptor.GetProperties(typeof(EntityType), filterAttributes); 这个方法可以去到所有的属性的一个集合,然后遍历这个集合,将在其中找出对应列的属性。(一般情况下,会使用PropertyDescriptor.GetCustomAttributes方法,然后判断其中是否包含特定的属性来判断是不是我们需要的属性) 呵呵,也不知道说的是不是你的问题。并且对于ORM不熟,因此不能给出完整的例子。请你再说详细一些你的需求。我好给出解决方案
9个月前   回答者:Colin Han - 老鸟四级
呵呵.NET3.5可以帮你实现,利用它的新特性。
9个月前   回答者:John Huang - 菜鸟二级
用 extension method(.NET 3.x)
9个月前   回答者:小智 - 初学一级
不要想得那么复杂,我在生成实体类的时候一般会从数据库生成一个列名的字段名称的列表. 我自己写了一个小工具,可以从数据库的注释生成中英文列名. 在这里下载 http://www.cnblogs.com/darkangle/archive/2007/07/29/835395.html
8个月前   回答者:沙加 - 老鸟四级
评论
9个月前   Wilensky :
我想楼主是要在后面加点别的东西吧,最好再说详细点
9个月前   坚持信念 :
PropertyInfo pi = t.GetProperty("Name");
name_for_name = pi.Name;

~~~~~~~~~~~~~~~~~~~~~~~~~
兄弟真有意思,哈哈
   您需要登录以后才能回答!
 

我要提问

我的问题


快到期问题

> 问题排行榜

相关链接