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

标签 c# anonymous-types

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

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

装配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" });
    }
}

最佳答案

因为你应该在同一个库中使用它们。 不能通过接口(interface)或类边界公开匿名类型。

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

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

关于c# - 为什么匿名类型在 C# 中具有内部可见性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9802877/

相关文章:

c# - 为什么在此示例中线程会增加时间(降低性能)?

c# - Dapper TypeHandler.SetValue() 未被调用

c# - 通过反射调用带有参数的泛型方法时,无法将 System.Int32 类型的对象转换为 System.Object[]

.net - 如何从 VB.NET 中的匿名类型获取属性

c# - LINQ 中的匿名类型查询或普通查询

.net - 为什么我不能将匿名类型作为参数传递给函数?

c# - 文本模板中可以使用匿名类型吗?

c# - 使用 linq 删除代码时出现错误

c# - 如何用rdlc中的新行替换定界符

objective-c - 是否需要将基本类型定义为枚举?