为什么匿名类型在C#中具有内部可见性?

时间:2012-03-21 10:39:09

标签: c# anonymous-types

这是因为如果匿名类型是公开的,可能会发生安全问题吗?我只是不明白。

这就是我希望语言支持的代码

装配1

public class Renderer
{
    public void RenderHtmlInput(dynamic inputModel)
    {
        var html = string.format("<input type='text' width='{0}' height='{1}'>", inputModel.width, inputModel.height);
        ...
    }
}

大会2

public class Consumer
{
    public void Run()
    {
        var renderer = new Renderer();

        renderer.RenderInput(new { width = "12px", height = "20px" });
    }
}

1 个答案:

答案 0 :(得分:3)

因为您应该在同一个库中使用它们。 在接口或类边界上公开匿名类型是不行的。

如果您想这样做,请使用动态类型。

编辑:匿名类型也会自动生成名称,因此将它们从库中公开意味着它们可能与来自其他库的匿名类型冲突。