C# 马修沃森:我通常会同意,谢谢你指出这一点。在这种情况下,这是有争议的,因为转换器只是去除了一些小瑕疵(基本上是解析树数据->AST),所以组合它们是可以的(在我看来)。但这一点很好@马修沃森提出了一个很好的观点。LDbList列表表示项目列表。转换器是一个
C# 马修沃森:我通常会同意,谢谢你指出这一点。在这种情况下,这是有争议的,因为转换器只是去除了一些小瑕疵(基本上是解析树数据->AST),所以组合它们是可以的(在我看来)。但这一点很好@马修沃森提出了一个很好的观点。LDbList列表表示项目列表。转换器是一个,c#,generics,subclass,C#,Generics,Subclass,马修沃森:我通常会同意,谢谢你指出这一点。在这种情况下,这是有争议的,因为转换器只是去除了一些小瑕疵(基本上是解析树数据->AST),所以组合它们是可以的(在我看来)。但这一点很好@马修沃森提出了一个很好的观点。LDbList列表表示项目列表。转换器是一个单独的对象,它将一个对象转换为另一个对象。它们是两个不同的物体,有不同的行为。我以前已经接受了答案,但你的答案很好。“隐藏脚手架”是我非常渴望做的事情;我不喜欢重复的功能,即使是一行程序。我已经尝试过静态方法了,这可能就是我要做的。干杯我以前已
马修沃森:我通常会同意,谢谢你指出这一点。在这种情况下,这是有争议的,因为转换器只是去除了一些小瑕疵(基本上是解析树数据->AST),所以组合它们是可以的(在我看来)。但这一点很好@马修沃森提出了一个很好的观点。LDbList列表表示项目列表。转换器是一个单独的对象,它将一个对象转换为另一个对象。它们是两个不同的物体,有不同的行为。我以前已经接受了答案,但你的答案很好。“隐藏脚手架”是我非常渴望做的事情;我不喜欢重复的功能,即使是一行程序。我已经尝试过静态方法了,这可能就是我要做的。干杯我以前已经接受了这个答案,但你的答案很好。“隐藏脚手架”是我非常渴望做的事情;我不喜欢重复的功能,即使是一行程序。我已经尝试过静态方法了,这可能就是我要做的。干杯
public class LDBList<T> : List<T> where T : LDBRootClass {
// typical constructor
public LDBList(LDBList<T> x) : base(x) { }
...
}
public LDBList(
Func<A, T> converter,
IList<A> aList)
{
foreach (var x in aList) {
this.Append(converter(x));
}
}
public class LDBList<A, T> : List<T> where T : LDBRootClass
{
// typical constructor
public LDBList(LDBList<A, T> x) : base(x) { }
public LDBList(
Func<A, T> converter,
IList<A> aList)
{
foreach (var x in aList)
{
this.Append(converter(x));
}
}
}
public static class LDBListCreator
{
public static LDBList<T> CreateFrom<T, A>(Func<A, T> converter, IList<A> aList) where T: LDBRootClass
{
var result = new LDBList<T>();
result.AddRange(aList.Select(converter));
return result;
}
}
public LDBList(IEnumerable<T> items) : base(items)
{
}
public class LDBRootClass
{
}
public class DerivedLDBRootClass : LDBRootClass
{
public DerivedLDBRootClass(string value)
{
// .. whatever
}
}
var strings = new List<string> { "One", "Two", "Three", "Four", "Five" };
var result = new LDBList<DerivedLDBRootClass>(strings.Select(item => new DerivedLDBRootClass(item)));
public class Converter<T,A>
{
public LDbList<T> CreateLdbList(IList<A>) {
var list = new LdbList<T>();
// do the conversion here
return list;
}
}
var Converter<X,Y> = new Converter();
var result = Converter.Convert(originalData);