在c#中,我想定义一个函数,参数类型为"属性类型"
象这样
void function(propertyinfor proinfo){}但是我发现个问题,proinfo是反射出来的,这个在程序设计时候,好象不能自动的列出来,只能通过函数名称这样写
void function (string proinfo){
//这里再反射出这个属性名的属性
}那么我想问一下,这种情况下,有什么好的方法能叫我们在输入代码的时候,编译器能智能感知我定义类的属性名呢,
比如,我们有个类C,有个属性P,能不能在我们使用function函数,在填写参数时写上  C.的时候,编译器自动列出所有这个类的属性呢,然后我再直接选 择一下就行,而不是再输入函数名称,叫编译器自动感知出属性的存在.就这些,帮我看一下

解决方案 »

  1.   

    你是想做个编译器/IDE,还是想vs实现你的功能?
      

  2.   

    这个编译器是你自己做的还是Visual studio. 
    说编译器不准确,应该说是IDE. 
      

  3.   

    泛型委托 action<T> 或 func<T>void function<T>(Func<T> fun){}调用 function(c=>c.xxx)
      

  4.   


    熊猫大侠,你能不能细说一下,没看明白,特别 是你的c=>c.xxx这个=>是什么意思
      

  5.   

    VS里自带智能感知,估计你没设置对Tools->Options->Text Editor->C#->IntelliSense另外Tools->Options->Text Editor->C#->General 也需要设置一下中文的VS,自己找对应着找一下
      

  6.   

    LZ想自己写一个Intellisense的功能吗?
      

  7.   

    自带的智能感知(Intellisense)功能
    设置类,属性自动能选择
    通过单击“工具”菜单上的“选项”,再单击“文本编辑器”文件夹中的“C#”,然后单击“IntelliSense”,可以访问“IntelliSense”属性页。
    http://msdn.microsoft.com/zh-cn/library/fcf2zk43.aspx
    http://msdn.microsoft.com/zh-cn/library/sx2bwtw7(VS.80).aspx
      

  8.   

    我想了一下,常规手段无法实现,除非他们继承同样接口IproperyInfo
    {
       PropertyInfo p;
       
    } class tools<T>
    where T:IproperyInfo
    {
       static ProperyInfo  Propery(T obj,Action<T> act)
       {        retrun obj.p;
       }
     } class a:IproperyInfo
    {
      int _x
       int x
       {
           get{
              //设置好properyInfo
             SetproperyInfo();
              retrun _x
            }
        }
    }调用
    a a1=new a1();
    tools<a>.Propery(a1,c=>c.x)
      

  9.   

    泛型委托 action<T> 或 func<T>void function<T>(Func<T> fun){}调用 function(c=>c.xxx)