Самый простой способ повторно использовать функцию без создания нового класса - PullRequest
3 голосов
/ 25 июня 2010

В настоящее время у меня есть функция, которая выглядит следующим образом:

public void AnimateLayoutTransform(object ControlToAnimate)
{
//Does some stuff
}

Я использую эту функцию во многих различных проектах, поэтому я хочу, чтобы ее можно было многократно использовать.Так что пока у меня есть это в файле .cs, заключенном в пространство имен и класс:

namespace LayoutTransformAnimation
{
    public class LayoutAnims
    {
        public void AnimateLayoutTransform(object ControlToAnimate)
        {
            //Do stuff
        }
    }
}

Проблема в том, что для использования этой функции в данном проекте, я должен сделать что-токак

new LayoutTransformAnimation.LayoutAnims().AnimateLayoutTransform(mygrid);

Это просто большая работа по повторному использованию одной функции.Есть ли способ, по крайней мере, использовать функцию без создания нового экземпляра класса?Аналогично тому, как мы можем Double.Parse() без создания нового double?

Ответы [ 4 ]

10 голосов
/ 25 июня 2010

Один из вариантов - сделать это обычным статическим методом. Альтернатива - если вы используете C # 3.0 или выше - это сделать его * * * * * * * * * * * * *

public static class AnimationExtensions
{
    public static void AnimateLayoutTransform(this object controlToAnimate)
    {
        // Code
    }
}

Тогда вы можете просто написать:

mygrid.AnimateLayoutTransform();

Можете ли вы указать тип элемента управления для анимации более точно, чем «Объект»? Это было бы лучше ... например, можете ли вы по-настоящему оживить экземпляры UIElement? Возможно нет ... но если вы можете быть более конкретным, это было бы хорошей идеей.

5 голосов
/ 25 июня 2010

Вы можете сделать это статическим методом.

MSDN Пример

3 голосов
/ 25 июня 2010

Я считаю полезным иметь статический класс утилит со статическими методами, которые можно использовать в пространстве имен проекта.

public static class YourUtilsClass
{

    public static Void YourMethod()
    {
        //do your stuff
    }   

}

Вы можете назвать это так: YourUtilsClass.YourMethod()

2 голосов
/ 25 июня 2010
namespace LayoutTransformAnimation 
{ 
    public class LayoutAnims 
    { 
        public static void AnimateLayoutTransform(object ControlToAnimate) 
    { 
        //Do stuff 
    } 
} 

}

LayoutTransformAnimation.LayoutAnims.AnimateLayoutTransform(something);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...