나는 열심히이 접근 방식을 수정 찾으려고 노력 데 이러한 데이터 구조C#을 상속, 새 수정 및 제네릭
의 컬렉션을 포함public abstract class Flow
{
public virtual double Value { get; set; }
public virtual DateTime Time { get; set; }
}
public class InboundFlow : Flow
{
}
public class OutboundFlow : Flow
{
}
내 비즈니스 오브젝트 :
내 데이터 구조를
public abstract class Fluent
{
public virtual IList<Flow> FlowCollection { get; set; }
public virtual double InitialBaseflow { get; set; }
}
public class Affluent : Fluent
{
public new virtual IList<InboundFlow> FlowCollection { get; set; }
}
public class Effluent : Fluent
{
public new virtual IList<OutboundFlow> FlowCollection { get; set; }
}
내가 노력하고있어 일반적인 방법은 사용 :
private static void FindInitialBaseflow<T>(ref T fluent) where T : Fluent
{
var linqFluent = fluent;
var flows = linqFluent.FlowCollection.ToList().FindAll(
flow =>
flow.Time >= SOME_DATE &&
flow.Time < SOME_OTHER_DATE);
var initialBaseflow = flows.Average(flow => flow.Value);
fluent.InitialBaseflow = Math.Round(initialBaseflow, 5);
}
내 문제는 linq 메서드에서 "linqfluent.FlowCollection"을 호출하면 Fluent의 FlowCollection null이 호출됨을 의미합니다.
어떻게 대신 자녀의 재산을 사용할 수 있습니까? 감사! 당신은 당신도 Flow
의 하위 클래스를 필요로하지 않는다는 것을 일단
public class Fluent<T>
where T : Flow
{
public IList<T> FlowCollection { get; set; }
public double InitialBaseflow { get; set; }
}
, 당신은 할 수 있습니다
는'new' 새로운 버전으로 속성을 덮어, 당신은 그것을 무시해야 할 것입니다. 하지만 당신은 공분산에 문제가 있습니다. – Femaref
FindInitialBaseflow를 호출하는 방법을 보여줄 수 있습니까 ?? FindInitialBaseflow < Affluent > (ref affluentobject)가 기본 클래스 콜렉션에 대한 호출을 수행합니다. –
@Ashley John : FindInitialBaseflow (ref 풍족한) 및 풍족한 서식의 풍족한 서식 –