brightheroes(闭关|那一剑的风情) 你的意思我不是很明白我的问题意思是这样的:
   现在已知一个MainData 类,并且知道在运行时它肯定会被实例化,通常情况下想使用这个类的方法和属性可以用它的对象获得,比如 maindata.Name,现在的情况是我不知道这个对象名,而且不能通过新建一个对象的方法获得属性,请问我想获得这个对象,改怎么写?

解决方案 »

  1.   

    用反射不知道可不可以,手头没.net,也没法尝试了
      

  2.   

    你是不是可以这样:
    在类的定义中加一个静态的变量用来记录这个类的一个实例.然后可以通过这个变量来得到实例化后的实例.如下:
    public class SomeClass
    {
    static public SomeClass sc;
    public SomeClass()
    {
    sc=this;
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }
    public void somefun()
    { }
    }
    这样只能得到一个实例,如果得到多个可以换成一个数组.
    不知道这样可不可以解决你的问题
      

  3.   

    Type type = yourtype;
    System.Reflection.ConstructorInfo ctor = type.GetConstructor(new Type[]{type});
    CellObject cellObj = (YourType)ctor.Invoke();
      

  4.   

    不过我觉得你的这个要求如果不在类的定义上改的话就有点像findwindow之类的函数一样了,这样话因为有一个作用域的问题,超出一定的范围你是很难甚至没有办法得到一个实例的.就像FindWindow()不能很好的得到按纽之类的handle一样.
      

  5.   

    现在已知一个MainData 类,并且知道在运行时它肯定会被实例化,通常情况下想使用这个类的方法和属性可以用它的对象获得,比如 maindata.Name,现在的情况是我不知道这个对象名,而且不能通过新建一个对象的方法获得属性,请问我想获得这个对象,改怎么写?
    --------------------------------------------------------------------------
     同意 hbxtlhx(下着春雨的天) ,你可以用singleton模式来实现
    添加一个工厂类,由这个工厂类来获得maindata的实例。
    public mainDataFactory
    {
         static private MainData md;     statuc public MainData getMainData()
         {
           if( md==null )
               md=new MainData();
           return md;
         }}
      

  6.   

    blog.csdn.net/greystar  
    这个市别人的  东西
    不过 有我的一个评论 是关于反射的 看看对你 是否有帮助