좋아, 그래서 이벤트가 트리거 될 때 전달할 수있는 EventArgs 관한 질문이 있습니다. 작고 기본적인 검색 엔진을 설계하고 검색이라는 메서드가 포함 된 Query라는 클래스가 있습니다. 이 메소드가 호출되면 다양한 캐시 클래스 인스턴스 (SizeBoundedCache 및 TimeBoundedCache)에 저장 될 결과를 전달할 이벤트를 트리거하려고합니다. 그래서 나는 이것을하기위한 최선의 방법이 사건을 사용하는 것이라고 생각했습니다.C# 이벤트 전달 인수
대리인은 다음과 같이 선언 ->
가public delegate void CacheStoreDelegate(object sender, EventArgs e);
이 질문에 대한 관련 쿼리 클래스 내 코드의 나머지 부분은 여기에 LINQ (사용) ->
public event CacheStoreDelegate AddToCache;
public virtual void OnQuery (EventArgs e)
{
if(AddToCache != null)
AddToCache(this, e);
}
public Query()
{
}
public Query(string queryString, OOP5.Provided.QueryOperator op)
{
//Access and set the terms array
this.Terms = OOP5.Provided.QueryUtils.GetTermsFromString(queryString);
this.Operator = op;
}
public static IEnumerable<string> Search (this SearchCore s, IQuery q)
{
// Accept a query and return IEnumerable<string> of
// all document IDs matching that query
if (q.Operator == QueryOperator.Any)
{
var GetAnyMatch = from single_query in q.Terms
group s.Search(single_query)
by s.documents.Keys
into results
where results.Count >= 1
select results[0];
this.OnQuery(GetAnyMatch);
return GetAnyMatch;
}
if (q.Operator == QueryOperator.All)
{
var GetAllMatch = from single_query in q.Terms
group s.Search(single_query)
by s.documents.Keys
into results
where results.Count >= q.Terms.Lengthselect results[0];
this.OnQuery(GetAllMatch);
return GetAllMatch;
}
}
모든 캐시 수업은 검색이 호출 될 때마다 통보 될 것이고 결과를 받기 위해서도 필요합니다.
미리 도움을 청합니다. 또한, 내가 생각하지 못하는 이것을하는 더 우아한 방법이 있다면, 안으로 차임하십시오. 건배!
와우, 멋진 분! –