对这些关键字有很多问题;我筛选了前30名左右,然后放弃了。从具有更具体方法的抽象基础继承
我有接口,像这样:
public interface IColumnRule
{
int Length { get; set; }
string Name { get; set; }
object Parse(string toParse);
int Position { get; set; }
Type Type { get; }
}
public interface IColumnRule<T> : IColumnRule
{
ColumnRule<T>.RuleFluentInterface<T> Configure { get; }
new T Parse(string rowdata);
Func<string, T> ParsingFunction { get; set; }
}
...的想法是,一个将实现IColumnRule<T>
创建利用Func<string, T>
强类型的列解析器。
问题是,我将这些IColumnRule<T>
混凝土存储在IList<IColumnRule>
容器中。有多种类型的IColumnRule<T>
,每种类型都执行不同的类型。当我调用IColumnRule
接口上的Parse
方法时,我期待调用子类的new Parse(string)
方法,但实际上调用的是基础Parse
。
如何使用接口的object Parse(string)
来调用IColumnRule
集合中的子类通用T Parse(string)
方法...或者这是不可能的?
这是明确说明你在声明'new'函数时得到的行为。请参阅[这里](http://msdn.microsoft.com/en-us/library/ms173153%28v=vs.110%29.aspx)。 – Bobson 2013-03-01 17:40:28
你几分钟前在你的问题中已经有了你的实现细节,但删除了它们。这有助于解释你为什么遇到问题。我用更详细的解决方案更新了我的答案,该解决方案可以帮助您。 – 2013-03-01 18:53:00
@ p.s.w.g是的,我认为这是太多的信息,将是一个TL; DR有点儿。你的答案是我正在寻找的;谢谢。 – 2013-03-01 18:59:12