As Jared points out, this is not possible. However, it is interesting to consider why not.
Suppose the field is private. Then it cannot be accessed in derived class B. (Assuming B is not a nested type of A.)
Suppose the field is not private. Doesn't matter whether it is public, internal, protected or protected internal. Suppose its public and this were legal. Now you have the following situation.
class B : A
{
override public D argument; // "overrides" A.argument
}
class E : C { }
class F
{
public static void M(A a)
{ a.argument = new E(); }
}
...
F.M(new B());
And hey, you just crashed the runtime. You just wrote an object of type E into a field that can only store type D. (We could make similar crashing scenarios for other configurations, like protected fields, and so on.)
Now, you might say, well, instead let me make a read-only property. That I can virtualize:
class A
{
public virtual C Argument { get; }
}
class B : A
{
public override D Argument { ... }
}
Now the problems go away. The public interface isn't writable, so there's no problem with someone writing something in there that is not supported. And the property is virtual, so there's a mechanism for overriding it.
That feature is called "return type covariance", and it is not supported in C# either. See http://stackoverflow.com/questions/2502252.
Please explain what you are really trying to do, not how you're trying to do it. There is probably a better way.