Generyczne properties

0

Mam zmienną typu object i chciałbym uzyskać właściwość działającą jak ta metoda, która działa idealnie:

public T getCos<T>()
{
return (T)_oObject;
}

Próbowałem wymyślić coś takiego, ale nie przyjmuje kompilator w ogóle takiej składni:

public T ThisObject<T>
{
get { return (T)_oObject; }
}

0

chodzi ci co coś takiego?

public static TResult CastAs<TResult>(this object obj) where TResult : class
{
    return obj as TResult;
}

źródło: http://stackoverflow.com/questions/1916260/more-fluent-c-sharp-net

0

Nie zachowuje się to jak właściwość.

W obiekcie mamy obiekt typu object, ale go rzutujemy jak trzeba i używając właściwości robimy to tak:

zmienna = (rzutowanieNaTypZmienna)JakasWlasciwosc;

W kodzie który dałem z metodą wygląda to tak:
zmienna = GetCos<TypZmienna>();

Idealnym rozwiązaniem by było uzyskanie czegoś takiego, dzięki generykom.

zmienna = JakasWlasciwosc;
Tylko to chyba nie realne? Wlaściwość mogłaby generycznie wiedzieć co się od niej wymaga i sama w środku na to zrzutowała i podała odpowiedniego typu obiekt.

0

i szukałeś i nigdzie nie było...
https://www.google.pl/search?q=c%23+generic+properties

0

Myślałem, że coś wie jeszcze ponad to. Czytałem te wątki, ale ludzie stwierdzają, że nie potrafią tego zrobić(lub się nie da) i korzystają z generycznych metod get i set.

0

przecież masz wyraźnie napisane, że c# nie ma generycznych właściwości. Czego chcesz jeszcze? BTW jaki jest sens istnienia właściwości generycznych?

0
shusty napisał(a):

zmienna = JakasWlasciwosc;
Tylko to chyba nie realne? Wlaściwość mogłaby generycznie wiedzieć co się od niej wymaga i sama w środku na to zrzutowała i podała odpowiedniego typu obiekt.

Mógłbyś chyba uzyskać taki efekt, gdyby typ miał zdefiniowane odpowiednie konwersje implicit: http://msdn.microsoft.com/en-us/library/85w54y0a.aspx

1 użytkowników online, w tym zalogowanych: 0, gości: 1