c#
  • anonymous-types
  • 2012-03-21 16 views 2 likes 
    2

    這是因爲如果匿名類型是公開的,可能會發生安全問題?我只是不明白。爲什麼匿名類型在C#中具有內部可見性?

    這就是我想通過語言支持的一種代碼

    大會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" }); 
        } 
    } 
    
    +2

    使用谷歌,這是一個經典的問題。 – 2012-03-21 10:42:30

    +0

    http://www.heartysoft.com/anonymous-types-c-sharp-4-dynamic – ken2k 2012-03-21 10:44:07

    +2

    他們是匿名的,這意味着他們沒有你可以參考的名字。你會如何從外部引用匿名類型? – Oded 2012-03-21 10:45:57

    回答

    3

    因爲你應該在相同的使用它們圖書館。 通過接口或類邊界公開匿名類型並不好。

    如果您想這樣做,請使用動態類型。

    編輯:匿名類型也會自動生成它們的名字,所以從庫中暴露它們意味着它們可能會與另一個庫中的匿名類型發生衝突。

    +1

    實際上,'dynamic'也可以*服從可訪問性規則,特別是當它對使用反射類型的「動態」 – 2012-03-21 11:06:31

    +0

    @linkerro爲什麼「通過接口或類邊界公開匿名類型是不好的」? – hvitorino 2012-03-21 15:12:40

    +0

    @linkerro爲什麼我應該在同一個庫中使用它們?我不明白這可能是一個安全問題。匿名類型只是具有一組只有getter的屬性的類。這怎麼會有害? – hvitorino 2012-03-21 15:19:23

    相關問題