Самое простое решение - создать функцию JavaScript и вызвать его для обратного вызова Ajax success
.
function callServerAsync(){
$.ajax({
url: '...',
success: function(response) {
successCallback(response);
}
});
}
function successCallback(responseObj){
// Do something like read the response and show data
alert(JSON.stringify(responseObj)); // Only applicable to JSON response
}
function foo(callback) {
$.ajax({
url: '...',
success: function(response) {
return callback(null, response);
}
});
}
var result = foo(function(err, result){
if (!err)
console.log(result);
});
Между вами и Майклом вы почти собрали части. Я думаю, что так оно и работает. (Я не писал код, поэтому я мог бы немного неправильно его сформулировать, но я уверен, что так оно и есть.)
Если:
, тогда код генерируется как (IPIAINTERFACE) Activator.CreateInstance (Type.GetTypeFromClsid (GUID OF COCLASSTYPE))
Если:
, тогда код генерируется так, как если бы вы сказали «новый COCLASSTYPE ()».
Джон, не стесняйтесь меня или Сэма напрямую, если у вас есть вопросы по этому поводу. FYI, Сэм является экспертом в этой функции.
Просто добавьте немного подтверждения в ответ Майкла:
Следующий код компилируется и запускается:
public class Program
{
public class Foo : IFoo
{
}
[Guid("00000000-0000-0000-0000-000000000000")]
[CoClass(typeof(Foo))]
[ComImport]
public interface IFoo
{
}
static void Main(string[] args)
{
IFoo foo = new IFoo();
}
}
Вам нужны как ComImportAttribute
, так и GuidAttribute
Также обратите внимание на информацию, когда вы наводите курсор мыши на new IFoo()
: Intellisense правильно подбирает информацию: Nice!