Рассылка закрыта
При закрытии подписчики были переданы в рассылку "BloggLand и Я | Блоггландия" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
← Сентябрь 2004 → | ||||||
1
|
2
|
3
|
4
|
5
|
||
---|---|---|---|---|---|---|
6
|
7
|
8
|
9
|
10
|
11
|
12
|
13
|
14
|
15
|
16
|
17
|
18
|
|
20
|
21
|
22
|
23
|
24
|
25
|
26
|
27
|
28
|
29
|
Статистика
0 за неделю
В двадцать втором выпуске рассылки '.Net Собеседник' вы можете прочесть обзор новых компонент и продуктов, разработанных с использованием платформы .Net, получить ссылки на новые технические статьи из Microsoft Knowledge Base,прочесть первод статьи 'Пишем приложения с плагинами на платформе .NET' и узнать как работатьсатрибутами в C#.
Информационный Канал Subscribe.Ru |
.Net Собеседник #22
Содержание- От автора
- Обзор новостей
- Статья выпуска - Пишем приложения с плагинами на платформе .NET
- Время кода - Атрибуты в C#
- Форумы .Net на www.sql.ru
От автора
Здравствуйте, коллеги!
Подробнее смотрите на этой страничке.
Что касается рассылки, то она будет существовать и распространяться в прежнем режиме и, надеюсь, ещё не раз вам пригодится.
Обзор новостей
-
C# для разработчиков на Delphi
- Документ в формате pdf, облегчающий разработчикам на Delphi процесс перехода на C#.
-
Microsoft
выложила FlexWiki на SourceForge.NET по лицензии CPL
- Microsoft выпустила FlexWiki, базирующуюся на веб среду для написания заметок и т.п., разработанную на ASP.NET. Это же ПО используется сейчас на Channel 9 Распространяется согласно Microsoft Common Public License.
FlexWiki – реализация WikiWikiWeb (Очень Быстрый Веб по-гавайски) на ASP.NET , позволяющий быстро разместить информацию в интранет или интернет. Особенности:
- Простое редактирование текста с использованием простых правил редактирования
- Уведомления по почте об изменениях в Wiki
- Поддержка RSS
- Тема History позволяет просмотреть все версии страницы на протяжении периода её существования
- Есть поиск по темам
- Обратные ссылки позволяют вернуться к теме, щёлкнув по её заголовку вверху страницы
- Microsoft выпустила FlexWiki, базирующуюся на веб среду для написания заметок и т.п., разработанную на ASP.NET. Это же ПО используется сейчас на Channel 9 Распространяется согласно Microsoft Common Public License.
-
Middsol соединяет CORBA и J2EE с
миром .NET.
- Middsol предлагает инструменты для разработки приложений и решений для того, чтобы открыть широко используемые архитектуры J2EE и CORBA для платформы Microsoft .NET.
-
Вышел компонент для
шифрования Warp|Crypto Encryption Component
- Компонент Warp|Crypto Encryption Component позволяет разработчикам легко интегрировать функциональность шифрования в приложения на платформе .Net. Компонент поддерживает 4 алгоритма шифрования и имеет простой интерфейс.
-
Алекс Хомер сделал обзор по .netCHARTING
- Alex Homer, Microsoft MVP, член сообщества CodeWise Community, группы ASP.NET Insiders и INETA Speaker Bureau сделал обзор набора компонент .netCHARTING Enterprise Edition для ASP.NET.
-
Разработка
пользовательского элемента управления для проверки кредитных карт
- В этой статье рассматривается написание элемента управления, расширяющего механизм валидации ASP.NET и и выполняющего как клиентскую, так и серверную проверки.
-
Доступно для
скачивания ядро БД VistaDB 2.0 (RC3) для .NET
- Ядро БД VistaDB 2.0 (RC3) для .NET теперь доступно для загрузки. VistaDB является альтернативой #1 для БД Jet/Access, MSDE, Xbase и иногда SQL Server, для построения небольших и средних решений. Включает встариваемое ядро размером в 1MB, управляемый провайдер для ADO.NET и компоненты VCL. Пробную версию можно скачать здесь.
-
Представляем aspNetMime 2.0 –
компонент парсинга сообщений в формате Mime
- aspNetMime предлагает возможность разбора сообщений mime, т.е. функциональность нигде более не предлагаемую в таком виде. Некоторые другие особенности и обновления включают: встроенный отлов спама, поддержку асинхронного чёрного списка DNS Blacklist (DNSbl), улучшенную поддержку разбора сообщений формата 8 Bit Mime, конвертацию Html в Plain Text, улучшенное декодирование UTF-7 и т.п.
-
Представляем aspNetPOP3 v2.0
- Первый компонент, позволяющий привязывать адрес электронной почты к DataGrid и поддерживающий DataBinding, дополнен новыми возможностями: поддержка синхронного и асинхронного чёрного списка DNS Blacklist (DNSbl), улучшенный парсинг формата 8 Bit Mime, более качественную поддержку упавших соединений POP3, автоматическую конвертацию из HTML в Plain Text, а также разбор потоков Mime файлов и текста.
-
Компонент
DualList Drag & Drop
- Поддержка Drag & Drop между двумя компонентами listbox’ами без написания кода. Прочтите статью и скачайте бесплатный компонент (есть исходник на C#).
-
Вышел Ad Hoc Query Builder 1.0.7 для ASP.net!
- С помощью компонента Ad Hoc Query Builder можно быстро добавить возможность писать запросы на лету для приложений ASP.Net. Можно использовать при построении отчётов, графиков и т.д.
-
Вышла новая версия
провайдера данных MySQLDirect .NET!
- Core Lab объявила о выходе нового провайдера данных MySQLDirect .NET Data Provider v2.50. Особенности в новой версии – пересмотренные, расширенные и переписанные в управляемом коде инструменты, называемые теперь DbTools; добавлен редактор SQL; дизайнеры компонент более тесно интегрированы с DbTools; добавлен новый компонент MySqlDataTable и т.д.
Статья выпуска
Пишем приложения с плагинами на платформе .NET
ЯЗЫК: C#
АВТОР: Tim Dawson http://www.divil.co.uk/net/articles/
Код к статье :
Демонстрационный проект на VB
ПЕРЕВОД: Чужа В.Ф ака hDrummer
Вступление
Архитектура плагинов
Пишем интерфейсы
using System;
namespace hDrummer.clInterfaces { /// <summary> /// IPlugin /// </summary> public interface IPlugin { void Initialize(IHost host); string Name { get; } double Calculate(int i1, int i2); } /// <summary> /// IHost /// </summary> public interface IHost { void ShowFeedBack(string strFeedBack); } } |
Пишем первый плагин
using System; using hDrummer.clInterfaces; namespace hDrummer.PluginLibrary { /// <summary> /// Plugin class /// </summary> public class PluginSample: clInterfaces.IPlugin { private clInterfaces.IHost objHost; public void Initialize(IHost host) { objHost = host; } public string Name { get { return "PluginSample1 - Adds two numbers"; } } public double Calculate (int i1, int i2) { return i1+i2; } } } |
Пишем приложение-хост
using System; using System.Drawing; using System.Collections; using System.ComponentModel; using System.Windows.Forms; using System.Data; using System.Reflection; using System.IO; namespace HostApplication { public class Form1 : System.Windows.Forms.Form { private System.ComponentModel.Container components = null; public AvailablePlugins[] FindPlugins(string strPath, string strInterface) { ArrayList Plugins = new ArrayList(); string[] strDLLs; Assembly objDLL; strDLLs = Directory.GetFileSystemEntries(strPath, "*.dll"); for (int intIndex=0;(intIndex<strDLLs.Length-1);intIndex++) { try { objDLL = Assembly.LoadFrom(strDLLs[intIndex]); ExamineAssembly(objDLL, strInterface, Plugins); } catch (Exception ex) { //ошибка загрузки DLL - мы тут ничего не делаем } } // тут надо посмотреть объявление переменной в VB проекте //AvailablePlugin Results[Plugins.Count-1]; if (Plugins.Count!=0) { Plugins.CopyTo(Results); return Results; } else {return null;} } public Form1() { InitializeComponent(); } protected override void Dispose( bool disposing ) { if( disposing ) { if (components != null) { components.Dispose(); } } base.Dispose( disposing ); } #region Windows Form Designer generated code private void InitializeComponent() { // // Form1 // this.AutoScaleBaseSize = new System.Drawing.Size(5, 13); this.ClientSize = new System.Drawing.Size(488, 273); this.Name = "Form1"; this.Text = "Form1"; } #endregion [STAThread] static void Main() { Application.Run(new Form1()); } } } |
private static ExamineAssembly(Assembly objDLL, string strInterface, ArrayList
Plugins){ Type objType; Type objInterface; AvailablePlugin Plugin; //Цикл по всем типам в DLL foreach (objType in objDLL.GetTypes()){ //Смотрим только типы public if (objType.IsPublic == true) { //игнорируем абстрактные классы if ((objType.Attributes And TypeAttributes.Abstract) != TypeAttributes.Abstract){ //Смотрим, реализует ли этот тип наш интерфейс objInterface = objType.GetInterface(strInterface, true); if (objInterface != null){ Plugin = new AvailablePlugin(); Plugin.AssemblyPath = objDLL.Location; Plugin.ClassName = objType.FullName; Plugins.Add(Plugin); } }}}} |
public static object CreateInstance(AvailablePlugin Plugin){
Assembly objDLL; object objPlugin; try { //Загружаем dll objDLL = Assembly.LoadFrom(Plugin.AssemblyPath); //создаём и возвращаем экземпляр класса objPlugin = objDLL.CreateInstance(Plugin.ClassName); } catch (Exception e){return null;} return objPlugin; }} |
Ещё один плагин
Прим. переводчика: Скачайте проект на VB, чтобы посмотреть код целиком. Ссылка на него - в заголовке статьи.
Вот и всё, удачного программирования!
Время кода
Атрибуты в C#
ЯЗЫК: C#
АВТОР: Dickey B. Singh www.road.com
Код к статье :
Демонстрация возможностей атрибутов (в конце статьи)
ПЕРЕВОД: Чужа В.Ф ака hDrummer
[Obsolete("Этот делегат не стоит использовать. В следующих версиях он поддерживаться не будет.")]
или сгенерировать ошибку для устаревших методов.
[Obsolete("Этот метод устарел с версии 1.2.3.4", true)]
Подробнее смотрите помощь по [ObsoleteAttribute] в спецификации языка C#.
В C++ атрибуты указываются между квадратными скобками, в Visual Basic – между угловыми.
Примеры
Атрибут |
Значение |
[STAThreadAttribute]
public static int Main(string[] args) { } |
Указывает, что модель приложения является однопоточной. Хозяином атрибута здесь является метод. Также известно, что есть класс STAThreadAttribute, с конструктором, не имеющим параметров STAThreadAttribute() |
[MTAThread] | [MTAThread] – сокращение для [MTAThreadAttribute], в C#. Другими словамисуффикс "Attribute" опционален. Если вы работаете в смешанной среде, то надо писать полное имя MTAThreadAttribute, а не сокращение MTAThread. |
[Obsolete] | [Obsolete] м.б. использован для пометки хозяина атрибута как устаревшего. Компилятор обработает этот атрибут и либо сгенерирует ошибку, либо предупреждение. |
[AttributeUsageAttribute(AttributeTargets.Field)]
public class PrecisionAttribute { public void PrecisionAttribute(int length, int precision) { } } |
Указывается, что атрибут, определённый пользователем, PrecisionAttribute, может быть применен только к полям. Также показано, что есть конструктор с именем AttributeUsageAttribute(AttributeTargets t) в классе AttributeUsageAttribute. Этот класс AttributeUsageAttribute is также определён в среде .Net. |
[In] или [InAttribute] | Оба означают одно и тоже. |
[InAttribute, Out, CustomMarshaller(true, UnmanagedType.U4))]
TraderIdentifier trId или [In] [Out] [CustomMarshaller(true, UnmanagedType.U4)] TraderIdentifier trId; |
Атрибуты могут объединяться с использованием точки с запятой или указываться отдельно с использованием квадратных скобок. |
[DllImport("User32.dll")] public static extern IntPtr GetWindow(IntPtr hWnd, int uCmd); |
Инструктируем компилятор о вставке кода для динамического доступа к dll. |
Пример кода
[Formatting("###-##-####")]
public int socialSecurityNumber; [FormattingAttribute("(###) ###-####")] public long phoneNumber; |
Иерархия классов
Класс AttributeSample выполняет основную функциональность. FormattingAttribute – это код для атрибута и содержит private-класс Core со своей фундаментальной функциональностью. Классы Person, USCitizen, USEmployee реализуют интерфейс ISupportsFormatting и иерархические отношения между ними показаны ниже. ISupportsFormatting нуждается в реализации методов string Fields() и string Field (string field) классом, реализующим этот интерфейс.
*Примечание переводчика: Собственно код приложения с реализацией этой идеи и схему классов вы можете найти по ссылке, указанной в начале статьи; здесь они не размещены, поскольку размер рассылки ограничен.
{К содержанию}
Форумы .Net на SQL.RU - вопросы оставшиеся без ответа
Получить дату создания загружаемого файла ASP.NETне работает Ambientware AutoFire
Сообщение окну
ладно, ... а кто нибудь сереализовал TreeNode?
На этом двадцать второй выпуск .Net Собеседника закончен.
До следующего номера.
Чужа Виталий Ф. aka hDrummer,
hdrummer@sql.ru - жду ваши предложения, вопросы и замечания.
http://subscribe.ru/
http://subscribe.ru/feedback/ |
Подписан адрес: Код этой рассылки: comp.soft.prog.dotnetgrains |
Отписаться |
В избранное | ||