Во многих проектах, над которыми я работаю, всякий раз, когда мне нужно вернуть коллекцию только для чтения, я использую интерфейс IEnumerable
и делаю его специфичным для типа следующим образом:
Public ReadOnly Property GetValues() As IEnumerable(Of Integer)
Get
'code to return the values'
End Get
End Property
В большинстве случаев я вернуть список, но в некоторых функциях и свойствах, доступных только для чтения, я возвращаю массив, который также служит цели, любезно предоставленной методами расширения.
Мой вопрос: нарушаю ли я какие-либо принципы проектирования, возвращая I m using prototype inheritance as described in https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/Object/Proto Now I can use String functions and MyString functions on MyString instances. But since I found http://ejohn.org/blog/simple-javascript-inheritance/ and it still looks a bit complex and somewhat overkill, compared to a single-line code :) Edit: Thanks for your answers ! IEnumerable
вместо определенных типов (например: List
, HashSet
, Stack
function MyString(data){this.data = data ;}
MyString.prototype = { data : null,
toString: function(){ return this.data ;}
} ;
MyString.prototype.__proto__ = String.prototype ;
__proto__
is deprecated, non standard and should be avoided, what would be the best way to inherists objects ?