forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Unity (http://forum.boolean.name/forumdisplay.php?f=144)
-   -   Можно ли добавить свой метод в UnityEngine.Random с помощью ExtensionMethods (http://forum.boolean.name/showthread.php?t=20864)

Evgen 22.11.2020 14:34

Можно ли добавить свой метод в UnityEngine.Random с помощью ExtensionMethods
 
Вобщем нужно добавить свой метод в класс Random

Пробую так:
Код:

public static class ExtensionMethods {

        public static void MySeed(this Random rnd, int seed){
                Random.seed = seed % 100;
        }

}

Компилер пишет:

error CS0117: `UnityEngine.Random' does not contain a definition for `MySeed'

Random является sealed классом может в этом ошибка?

При этом с Color32, String и т.д. этот трюк проходит.

Антихрист 22.11.2020 15:29

Ответ: Можно ли добавить свой метод в UnityEngine.Random с помощью ExtensionMethods
 
А extension метод пытаешься вызвать на инстансе рандома?
Код:

UnityEngine.Random r = new UnityEngine.Random();
r.MySeed(100);

У меня без ошибок

Andvrok 22.11.2020 15:31

Ответ: Можно ли добавить свой метод в UnityEngine.Random с помощью ExtensionMethods
 
Предполагаю, что ты пытаешься вызвать Random.MySeed() потом, т.к. у рандома методы статические все, но в таком случае это не прокатит. Экстеншены для того, с чего можно сделать экземпляр; код ниже прокатит, например:

PHP код:

var rnd = new Random();
rnd.MySeed(100); 


Evgen 22.11.2020 21:02

Ответ: Можно ли добавить свой метод в UnityEngine.Random с помощью ExtensionMethods
 
Цитата:

Сообщение от Антихрист (Сообщение 317941)
метод пытаешься вызвать на инстансе рандома

Цитата:

Сообщение от Andvrok (Сообщение 317942)
Экстеншены для того, с чего можно сделать экземпляр

Да так и есть... т.к. у Random все методы статические я решил что можно так сделать.
Если создать экземпляр то все работает.


Часовой пояс GMT +4, время: 13:27.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot