相关疑难解决方法(0)

为什么dynamic.ToString()在字符串而不是字符串之间返回一些东西?

我使用从a派生的类型DynamicObject作为某些字符串的构建器.最后我打电话ToString来获得最终结果.

在这一点上,我认为它会给我一个正常的字符串,但这个字符串有点奇怪.当我在其上使用字符串函数时,它的行为就像一个,但它的行为就像我实际上不知道什么,既不是字符串也不是动态.


这就是我ToString在构建器上实现的方式

public class Example : DynamicObject
{
    public override bool TryConvert(ConvertBinder binder, out object result)
    {
        if (binder.ReturnType == typeof(string))
        {
            result = ToString();
            return true;
        }
        result = null;
        return false;
    }   

    public override string ToString()
    {
        return base.ToString();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我像这样运行它

dynamic example = new Example();
Console.WriteLine(example.ToString().ToUpper());
Run Code Online (Sandbox Code Playgroud)

结果是正确的:( USERQUERY+EXAMPLE在LINQPad中执行时)

但是,如果我像这样打电话给第二行

Console.WriteLine(example.ToString().Extension());
Run Code Online (Sandbox Code Playgroud)

哪里

static class Extensions
{
    public static string Extension(this string str)
    {
        return str.ToUpper();
    }
}
Run Code Online (Sandbox Code Playgroud)

应用程序崩溃了一个RuntimeBinderException …

c# dynamic tostring

5
推荐指数
1
解决办法
2565
查看次数

标签 统计

c# ×1

dynamic ×1

tostring ×1