Здравствуйте, godwizard, Вы писали:
G>Ну не скажи...
Скажу.
G>Если как у вас делать, т.е. на dll, то вся функциональность сохраниться.
Какие у нас dll? Нет у нас никакх таких dll, у нас сборки одни.
G>ну насчет этого погорячился наверно
Это точно. вот тебе для примера плагин, который цитаты вставляет. Это он весь целиком, с настройками и прочей чепухой
using System;
using System.Text;
using System.Collections;
using System.ComponentModel;
using RSDN.Janus;
using RSDN.Janus.Plugins;
namespace RSDN.Janus.StdPlugs
{
/// <summary>
/// Summary description for CitationPlugin.
/// </summary>
//Этот атрибут - все что нужно для того чтобы янус нашел его и загрузил в свои коллекции
[JanusPlugin("Цитирование",
Description = "Вставляет случайную цитату из набора заданных")]
//Реализация интерфейса ITaglinePlugin - признак того, что это плагин таглайна
//Реализация IConfigurablePlugin - признак того что плагин имеет настройки
public class CitationPlugin : ITaglinePlugin, IConfigurablePlugin
{
public CitationPlugin()
{
}
public string TagId
{
get
{
return "citation";
}
}
public string GetTagString()
{
if((config.Citations == null) || (config.Citations.Length < 1))
return "<no any citation>";
Random rnd = new Random();
string s;
if(config.QueryType == CitationQueryType.Случайно)
{
int cp = rnd.Next(config.Citations.Length);
s = config.Citations[cp];
}
else
{
if(config.lastPosition >= config.Citations.Length)
config.lastPosition = 0;
s = config.Citations[config.lastPosition];
}
return s;
}
private CitationPluginConfig config = new CitationPluginConfig();
public object Config
{
get {return config;}
set {config = (CitationPluginConfig)value;}
}
}
public enum CitationQueryType
{
Случайно,
Поочереди
}
//Произвольный класс с настройками. Все публичные поля и свойства будут сериализованы в файл конфигурации,
//а при старте автоматически десериализованы
public class CitationPluginConfig
{
[DisplayName("Имя макроса"),
Description("Имя макроса, которое нужно указывать в строке таглайна"),
Category("Общие")]
public string TagId
{
get {return "@@citation";}
}
[DisplayName("Версия плагина"),
Description("Версия плагина"),
Category("Общие")]
public string Version
{
get {return "1.0 alpha 1";}
}
private string[] citations;
[DisplayName("Цитаты"),
Description("Список цитат"),
Category("Цитаты")]
public string[] Citations
{
get {return citations;}
set {citations = value;}
}
public int lastPosition = 0;
private CitationQueryType queryType;
[DisplayName("Тип выборки"),
Description("Тип выборки цитат"),
Category("Цитаты")]
public CitationQueryType QueryType
{
get {return queryType;}
set {queryType = value;}
}
}
}
... << RSDN@Home 1.0 beta 2 (np: тихо) >>