Как я могу расширить модель из другой сборки? - PullRequest
2 голосов
/ 23 июля 2010

Как добавить свойство к модели, созданной в другой сборке. У нас есть много приложений, начиная от настольных приложений до веб-приложений, поэтому у меня есть библиотека классов с каждой необходимой моделью вместе с их связями. Я очень легко могу ссылаться на мою библиотеку классов и запрашивать, что нужно. Однако из-за того, что я не моделирую каждое поле в каждой таблице (в некоторых таблицах более 30 полей).

Как расширить исходную модель, чтобы придать ей больше свойств? Или я должен просто смоделировать все в таблицах, которые я использую? Первоначально я думал, что было бы неплохо, если бы разработчик мог расширить любую модель по своему желанию в соответствии с потребностями своего проекта.

Ответы [ 2 ]

2 голосов
/ 23 июля 2010

вы можете унаследовать свой собственный класс нового базового класса формы сборки старой сборки, если у вас есть ссылка на старую и этот класс является общедоступным.

0 голосов
/ 27 ноября 2013

В дополнение к тому, что предлагает Арсений, вы можете «подделать расширение класса», добавив так называемые методы расширения.В качестве примера вы можете расширить строку следующим образом:

public static class StringExtensions 
{
    public static string Affix(this string source, string prefix, string suffix)
    {
        return string.Format("{0}{1}{2}", prefix, source, suffix);
    }
}

, которая использует только открытые данные для класса, который расширяет, и поэтому не нарушает договор о том, чтобы не изменять чей-либо другой класс без владения исходным кодом,Но он добавляет синтаксический сахар, позволяющий вам вызывать класс так, как будто вы его действительно изменили, например:

string myString = "MyString";
string result = myString.Affix("Before", "After");
// result contains "BeforeMyStringAfter"
...