Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как вызвать методв расширения? / 3 сообщений из 3, страница 1 из 1
21.08.2014, 11:28
    #38725323
Snak2013
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать методв расширения?
Доброго времени суток написал 2 метода расширения но никак не могу их вызвать
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
 public static class BinaryOperationExtension
    {
        public static void WriteStruct<T>(BinaryWriter Writer, T obj) where T : struct
        {
            int rawsize = Marshal.SizeOf(typeof(T));
            IntPtr buffer = Marshal.AllocHGlobal(rawsize);
            Marshal.StructureToPtr(obj, buffer, false);
            byte[] rawdatas = new byte[rawsize];
            Marshal.Copy(buffer, rawdatas, 0, rawsize);
            Marshal.FreeHGlobal(buffer);
            Writer.Write(rawdatas);
        }
 
        public static T ReadStruct<T>(BinaryReader reader) where T : struct
        {
            byte[] rawData = reader.ReadBytes(Marshal.SizeOf(typeof(T)));
            GCHandle handle = GCHandle.Alloc(rawData, GCHandleType.Pinned);
            var returnObject = (T)Marshal.PtrToStructure(handle.AddrOfPinnedObject(), typeof(T));
            handle.Free();
            return returnObject;
        }
    }
    
    class BinarySetings 
    {

        Setings s= new Setings();

        public BinarySetings()
        {
            
        }
 
        public void Read()
        {
            using (BinaryReader br = new BinaryReader(new FileStream("file.bin", FileMode.Open)))
                this.s= br.ReadStruct<Setings>();
           
        }
 
        public void Write()
        {
            using (BinaryWriter br = new BinaryWriter(new FileStream("file.bin", FileMode.Create)))
                br.WriteStruct<Setings>(this.s);
        }
    }


Экземпляр BinaryWriter для которого выли написаны расширения почему то их не видит возможно я неправильно написал класс содержащий эти разрешения или неправильно их вызываю пожалуйста подскажите где я ошибся.
...
Рейтинг: 0 / 0
21.08.2014, 11:30
    #38725327
Алексей К
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать методв расширения?
public static void WriteStruct<T>( this BinaryWriter Writer, T obj) where T : struct
...
Рейтинг: 0 / 0
21.08.2014, 11:34
    #38725330
Snak2013
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как вызвать методв расширения?
Спасибо большое, я это проглядел.
...
Рейтинг: 0 / 0
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Как вызвать методв расширения? / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]