我知道它有点拗口,可能无法完全理解。所以这是我正在尝试做的一个例子。
public class TypeWithString
{
public string MyString { get; set; }
}
string s = "We Want Moshiach Now";
TypeWithString tws = new TypeWithString();
object o = s;
dynamic d = tws;
d.MyString = o;
这段代码出人意料地产生了一个错误RuntimeBinderException: Cannot implicitly convert type 'object' to 'string'
。即使MyString
是类型string
,并且被保存的o
是string
.
这是 DLR 中的错误还是缺点?
有没有办法绕过它?
如果我提前不知道类型。但我确实知道它符合鸭子类型。即我知道它实现了一个不成文的接口。无论如何,当它们确实是正确的类型时,我可以将一个变量分配给另一个变量吗?
非常感谢