Кто-то может объяснить преимущества использования Основного блока Interop в .NET?

Попробуйте это:

<?php
$html_classes = 'class1    class2  class3 ';
$parts = explode(" ", $html_classes);
$results = "";
foreach($parts as $c){
    if($c != ""){
        $results .= "." . $c;
    }
}
echo $results;
?>

Результаты, которые я получил:

.class1.class2.class3

Надеюсь, что помогает.

10
задан Kilhoffer 15 October 2008 в 13:58
поделиться

2 ответа

Можно найти много информации об этом здесь.

Короче говоря PIA является interop блоком со знаком, который предоставляет "официальное" определение типов в библиотеке COM от издателя библиотеки COM.

Относительно преимуществ, отправленная статья суммирует его довольно хороший:

PIAs важны, потому что они обеспечивают уникальные идентификационные данные типа. PIA отличает официальные определения типа от поддельных определений, предоставленных другими interop блоками. Наличие единственных идентификационных данных типа гарантирует соответствие типов между приложениями, которые совместно используют типы, определенные в PIA. Поскольку PIA подписан его издателем и маркирован атрибутом PrimaryInteropAssembly, он может дифференцироваться от других interop блоков, которые определяют те же типы.

13
ответ дан 3 December 2019 в 20:45
поделиться

Основной interop блок перенесет COM-интерфейсы в.NET совместимые типы. Это не дает Вам детализированный контроль, который делает вручную вызов методов, но это достаточно близко.

Без PIA:

object _comObject;
Type _comObjectType;
_comObjectType = Type.GetTypeFromProgID("MyCompany.MyApplication.MyObject", true);
_comObject = Activator.CreateInstance(_comObjectType);

string name = (string)_comObjectType.InvokeMember("GetCustomerName", BindingFlags.InvokeMethod, null, _comObject, , new object [] { _customerId });

С PIA:

MyCompany.MyApplication.MyObject obj = new MyObject();
string name = obj.GetCustomerName(_customerId);
4
ответ дан 3 December 2019 в 20:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: