I have hierarchy of classes:

```
class A{}
class B: A {}
class C:B {}

```

is it possible to implement method in class A and it would be inherited by derived classes B and C and so on and that method should return value of class type?

```
A val = A.method(); (val is A)
B val = B.method(); (val is B)
C val = C.method(); (val is C)

```

And I don't want use of generics in call of this method, ie:

```
C val = C.method<C>();

```

Guys, excuse me, one elaboration, this method should be static. 

I don't want to use generic in method istelf, because it forces to point type that method should return, whereas method should return type of its class.

```
class A
    {
      Method<T>()
      {
         T result;
         return result;
      }
    }

```

If I have such method I can change return type:

```
D result = A.Method<D>();

```

but I wanted it to return value of type A;