Я отсутствую оператор With Visual Basic при перемещении в C#, таким образом, здесь это идет:
public static void With(this T obj, Action act) { act(obj); }
И вот то, как использовать его в C#:
someVeryVeryLonggggVariableName.With(x => {
x.Int = 123;
x.Str = "Hello";
x.Str2 = " World!";
});
Сохраняет большой ввод!
Сравнивают это с:
someVeryVeryLonggggVariableName.Int = 123;
someVeryVeryLonggggVariableName.Str = "Hello";
someVeryVeryLonggggVariableName.Str2 = " World!";
вставляет codeplex проект
Вы почти наверняка захотите объявить next_command как указатель. Создание структуры, которая содержит саму себя, невозможно (на любом языке).
Я думаю, что это то, что вам нужно:
class EthercatDatagram(Structure):
pass
EthercatDatagram._fields_ = [
("header", EthercatDatagramHeader),
("packet_data_length", c_int),
("packet_data", c_char_p),
("work_count", c_ushort),
("next_command", POINTER(EthercatDatagram))]
Вы должны будете получить доступ к _fields_
статически после того, как создадите его.
class EthercatDatagram(Structure)
_fields_ = [...]
EthercatDatagram._fields_.append(("next_command", EthercatDatagram))