首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

急问:请教一个很简单的反射的有关问题

2012-02-09 
急问:请问一个很简单的反射的问题public class a{string b123}请问如何在别的地方动态获得b的值呢?其

急问:请问一个很简单的反射的问题

public class a
{
string b="123";
}
请问如何在别的地方动态获得b的值呢?其中类型已经确定。

public class xx
{
string c;
怎么让c指向b,得到c="123"呢?
}

这个问题够简单吧,好像得用反射,但是我实在写不出来啊。。。。。。。。。

[解决办法]
搂主的问题有点不明却,b并不是静态的,也就是说每个a类都各自有一个b数组,同样xx也是,那么xx中的c数组到底要指向那个a类实例中b数组呢?
只能这样做了

C# code
 public class a    {        public string[] b = {"1","2","3"};    }    public class xx    {        public string[] c;        public xx(a _a)        {            c = _a.b;        }    } class Program    {        static void Main(string[] args)        {            a a = new a();            foreach (string s in a.b)            {                Console.WriteLine(s);            }            xx xx = new xx(a);            foreach (string s in xx.c)            {                Console.WriteLine(s);            }            Console.ReadLine();        }    }
[解决办法]
良好的设计标准不推荐这样做,如果实在要这样做,推荐看看老外的blog。毕竟这不是一个很简单的问题,

http://codebetter.com/blogs/patricksmacchia/archive/2007/09/12/dissecting-an-undeterministic-windows-forms-v2-bug.aspx

可以看看An idea for the fix下面的代码,是怎么读到一个private的成员的。
[解决办法]
不好意思,如果你指要获取私有成员的话:

C# code
 public class a    {        string[] b = { "1", "2", "3" };        public string[] B        {            get { return b; }        }    }    public class xx    {        string[] c;        public string[] C        {            get { return c; }        }        public xx(a _a)        {            c = ((string[])_a.GetType().GetField("b", BindingFlags.NonPublic|BindingFlags.Instance).GetValue(_a));        }    } class Program    {        static void Main(string[] args)        {            a a = new a();            foreach (string s in a.B)            {                Console.WriteLine(s);            }            xx xx = new xx(a);            foreach (string s in xx.C)            {                Console.WriteLine(s);            }            Console.ReadLine();        }    }
[解决办法]
如果是只有一个class a的话,为什么不
public class xx:a ------------------------------让xx从a派生呢?到时候直接应用就是了
{
public void xxx(string xxxx) 

string[] c; 
c = 这时要根据参数xxxx的值来确定c指向a.aa还是b.bb,就是不知道这个地方的代码怎么写。 



}

热点排行