请原谅例子。我有一个编码器返回一个接口。取而代之的是使用“is”和“as”来获得实现该接口的对象,我想使用dynamic来访问该对象的
字段
属性。
字段
属性不在接口上,但在实现该接口的所有对象中是共同的。这是一个合理的方式来使用C#动态?
编辑:我还应该提到,我没有控制编码器或它的接口,所以我不能修改它们。
public class Program
{
public Program()
{
dynamic temp = GetInterface();
string s = temp.Blah;
temp.Blah = s;
}
private ITest GetInterface()
{
return new Test();
}
}
public interface ITest
{
}
public class Test : ITest
{
public string Blah { get; set; }
}
如果它在所有对象中都很常见,为什么它不是界面的一部分? – 2012-02-14 22:03:09
IMO使用'dynamic'的唯一原因是与构建在DLR上的语言(如IronPython)互操作。 – 2012-02-14 22:03:35
是否有某些原因导致您无法修改接口以包含所有实现它的类所共有的成员? '动态'似乎是错误的东西在这里使用(虽然是的,它的工作原理) – 2012-02-14 22:04:02