【发布时间】:2018-09-27 08:47:21
【问题描述】:
假设
- 我已经知道框架不允许在示例中讨论模式
- 我需要从更简单的通用模式应用程序中受益。
上下文
我正在审查一个客户的代码,并确定了一些在多个类/结构中可靠实现的静态/实例方法。
我正在寻找一种类似于示例的方法,该方法将允许执行所描述的设计。
示例
public class StaticObject<T>: T where T: class, new(){
public void Method1(){}
public int Method2(){}
}
public class Object : StaticObject<KeyedCollection<string, object>>{
}
问题
我可以利用哪些替代方法来获得从 Generic T 继承类并公开两个静态方法的能力?
【问题讨论】:
-
啊,我忽略了这个问题,你希望泛型类继承自它自己的泛型参数......所以我仍然不明白这意味着什么并用于实际生活。你能举一个现实生活中的例子吗?也许这是一个 xy 问题,您实际上尝试实现的目标有不同的方法。
-
我想我可以有一个虚拟接口并针对该接口应用扩展
-
@GoldBishop - 我也在努力理解它的应用。如果我有一个
StaticObject<string>,那么这两种方法必须使用反射才能看到T实际上是string。它似乎首先否定了继承的价值。这种方法适用于哪些实际示例? -
StaticObject<string>,StaticObject<KeyedCollection<string, object>>,StaticObject<CustomClass>....它将允许我定义一组通用方法,并且每个继承类都可以访问并相应地公开它们;同时为了目的从通用T继承 -
我不明白你在问什么,你的代码编译了一些小的更正dotnetfiddle.net/G0s77E
标签: .net generics inheritance .net-4.6.1