Как обеспечить внедрение зависимости через StructureMap для пользовательского ролевого поставщика с WCF?

Мы собираемся быть использованием пользовательского ролевого поставщика с WCF. Переопределенный метод GetRolesForUser потребует использования уже существующего RoleRepository.

Теперь, с заурядным классом, мы создали бы его использование, StructureMap и зависимость RoleRepository будут введены через конструктора.

Однако это - WCF, который делает построение из пользовательский ролевой класс поставщика, и это 'сделано' declaritavely через атрибут roleManager в web.config.

Я действительно не хочу соединять RoleRepository depndency проводами в пользовательскую роль probvider класс, но похоже, что я буду иметь к.

Какие-либо идеи?

5
задан Mark Seemann 8 January 2010 в 10:25
поделиться

1 ответ

Простые намазанные / конденсированные ORM-отображение с использованием Linq

Рассмотрим эту таблицу:

[MessageId] INT,
[MessageText] NVARCHAR(MAX)
[MessageDate] DATETIME

... и эта структура:

struct Message
{
    Int32 Id;
    String Text;
    DateTime Date;
}



вместо того, чтобы делать что-то вдоль линий:

List<Message> messages = new List<Message>();

foreach (row in DataTable.Rows)
{
    var message = new Message
    {
        Id = Convert.ToInt32(row["MessageId"]),
        Text = Convert.ToString(row["MessageText"]),
        Date = Convert.ToDateTime(row["MessageDate"])
    };

    messages.Add(message);
}

можно использовать LINQ и делать то же самое с меньшим количеством строк кода, и на мой взгляд; Больше стиля. Вроде так:

var messages = DataTable.AsEnumerable().Select(r => new Message
{
    Id = Convert.ToInt32(r["MessageId"]),
    Text = Convert.ToString(r["MessageText"]),
    Date = Convert.ToDateTime(r["MessageDate"])
}).ToList();

Этот подход может быть вложенным, как и петли могут.

-121--1749590-

Ролевые и родственные типы являются наследие ASP.NET, которые печально известны для не дружественных. Они требуют конструктора по умолчанию, и нет никаких крючков, предлагаемых для их инициализации. Это отстой, но это так, как оно есть.

В таких ситуациях лучшее лекарственное средство - реализовать рольПровидер в качестве скромного объекта . Другими словами, рольProvider должен проводить все зависимости, но оттуда он делегает все реализацию на ваш собственный открытый и расширяемый API.

6
ответ дан 14 December 2019 в 13:37
поделиться
Другие вопросы по тегам:

Похожие вопросы: