|
|
1
11
这不可能是你想要的方式,确切地说。 可以使用相同的名称创建“新”属性:
这不是完全相同的事情,但它可能和你将要得到的一样接近。 另一种可能的方法是:
这种方法的优点是它确实保证了不可能在您的数据属性中放置不是Sundata的内容。缺点是您的数据属性不是强类型的,如果您希望它静态类型化为Sundata,则必须使用Sundata属性。 有一个丑陋的方法可以让“两全其美”,代价是混淆代码,并且很难理解代码——引入一个中间派生类,该类对基类数据属性执行“密封重写”,并用新名称重定向到另一个受保护的属性,然后拥有最终派生类。添加一个“new”数据属性,然后调用中间属性。这真是一个丑陋的黑客,虽然我已经做了,但我不会推荐它。 |
|
|
2
7
试着用仿制药来解决这个问题。以下类提供了
这种方法的吸引力在于它允许您返回强类型属性 和 对这些属性的类型强制基本继承约束。这些方法是完全可重写的;但是,请注意,可能需要重写,以避免在基类实现中引发问题。 |
|
|
3
1
如果你在寻找协方差路径,类似这样的方法应该有效:
公平警告,完全未编译的代码,我可能是完全错误的:)但这是对我认为你想要的东西的一个戳… 哦,还有我 认为 这是一个.NET 4.0唯一的解决方案,我认为您不能在前面这样做,这里引入了协方差… |
|
|
4
0
如果sundata的赋值与outerspace数据兼容(继承自),则无需修改outerspace数据的类型。 |
|
5
0
对于泛型不确定,但是可以通过简单的多态性实现有限的效果(假设sundata继承数据等)
|