ОК, поэтому действие - это просто сокращение для метода void
, принимающего один параметр типа T
. Он определяется как:
public delegate void Action<T>(T obj);
Таким образом, когда вы определяете функцию, принимающую Action в качестве параметра, вы можете просто вызвать ее, как если бы она была делегатом:
public void LoadMetaData (Action<MetaDataOperation> callback) {
//method implementation
callback(new MetaDataOperation());
}
В приведенном выше сценарии MetaDataOperation
может быть любого типа, который вы хотите.
Сказав это, я чувствую, что это может не ответить на ваш вопрос. В таком случае, не могли бы вы предоставить более подробную информацию о том, в чем проблема?
РЕДАКТИРОВАТЬ Верно, поэтому MetaDataOperation
в данном случае - это какой-то параметр, который вы хотите передать из метода LoadMetaData
после его завершения. Это полностью зависит от вас, что в нем. Если вам это на самом деле не нужно, вы можете не иметь его так:
public void LoadMetaData (Action callback) {
//method implementation
callback();
}
//Use of LoadMetaData
public static void OnMetaDataFinished() {
System.Diagnostics.Debug.Trace("Finished loading metadata");
}
WhateverClass.LoadMetaData(OnMetaDataFinished);
//OR lambda version
WhateverClass.LoadMetaData(()=>System.Diagnostics.Debug.Trace("Finished loading metadata"));