【发布时间】:2016-03-22 04:10:47
【问题描述】:
我有一个类定义如下:
public class Foo
{
private int _LengthVar;
private string _StringVar;
public string StringVar
{
get { return _StringVar; }
set { _StringVar = value;
_LengthVar = value.Length;
}
}
public int LengthVar
{
get { return _LengthVar; }
}
}
我创建了一个 Foo class=>
object obj = new Foo();
当我尝试使用obj.StringVar="some val"; 为属性StringVar 分配一些值时,它不会允许;其中((Foo)obj).StringVar = "this is another value"; 是一个有效的分配。
但是当我删除分配并运行程序并使用断点检查时,obj 显示了Foo 类的所有属性。
我的疑惑来了; 对象是否具有动态行为?
【问题讨论】:
-
我不知道你的意思是“对象具有动态行为”,但是调试器(和任何代码)可以很容易地使用
GetType获取对象的类型,并通过反射查看对象的所有信息。 .. -
有一个 'dynamic' 关键字允许“动态”行为,但这绝对是一个很少使用的东西,对于普通应用程序考虑永远不要这样做。
标签: c# .net object dynamic clr