2013-05-24 2 views
3

Я использую в asp.net заранее подготовленный код. Он предоставляет мне класс MembershipUser, а также имеет несколько других классов, которые используют MembershipUser.Я не уверен, как правильно расширить классы

Я хочу добавить новую недвижимость в MembershipUser, не изменяя ничего. Я все еще хочу, чтобы все готовые функции работали с ним.

Как я могу продлить MembershipUser, чтобы включить новое свойство, не создавая отдельный класс, о котором другие функции не знают?

+0

Что вы пытаетесь достичь? Не могли бы вы создать свойство профиля? –

ответ

2

в C# у вас есть только три варианта для расширения классов:

  1. Inheretance
  2. Decoration (MSDN Link)
  3. Extension Methods

К сожалению, ни один из них не будет делать то, что вы пытаетесь достигать.

+0

для ссылки 1,2, можете ли вы направить некоторые ссылки на msdn так же, как 3? Ссылка wiki менее конкретна. – David

+0

# 2 - это шаблон дизайна, поэтому на нем нет действительно хорошей статьи MSDN ... –

+0

«# 2 - шаблон дизайна», должны быть некоторые примеры C#? – David

1

Если вы можете наследовать от класса, сделайте это. Например, если ваше имущество является string

public class ExtendedMembershipUser : MembershipUser 
{ 
    public string MyNewProperty { get; set; } 
} 

Или добавить метод расширения, если вы не можете наследовать (вы не можете добавить свойство):

public static class MembershipUserExtensions 
{ 
    public static string MyNewMethod(this MembershipUser user) 
    { 
     return "answer"; 
    } 
} 
Смежные вопросы