использование абстрактных классов из другой сборки в .NET - PullRequest
2 голосов
/ 12 августа 2011

Допустим, у меня есть 3 проекта: 1 Project - это веб-проект, который находится в .NET MVC3 1 ​​Project - это логика бизнеса для приложения.Где на него ссылаются из веб-проекта.1 Внешний проект (MyTools), который имеет некоторые общие функции, такие как log4Net, реализации nHibernate.

Моя цель - реализовать определенный абстрактный класс, который есть в проекте MyTools в логике бизнеса.

public class Client : IEntity //Project Location: Buisness Logic Project
{
    public int Id { get; set; }
    public string Name { get; set; }
}

public class ClientAO : BaseDAO<Client> //Project Location: Buisness Logic Project
{

}

public interface IEntity //Project Location: MyTools Logic Project
{
    int Id { get; set; }
}

public abstract class BaseDAO<TEntity> where TEntity : IEntity, new() //Project      Location: MyTools Logic Project
{
    public static TEntity GetEntityById(int Id)
    {
        //Logic here to get object with ID = id
    }
}

Проблема здесь: когда я пытаюсь использовать класс ClientAO, метод GetEntityById недоступен в веб-проекте, хотя на него ссылаются.Затем, если я переместлю всю логику в проекте MyTools в логику бизнеса, ничего не меняя, GetEntityById будет доступен.Я не могу понять, что происходит с этой проблемой.Есть ли проблема с модификаторами доступа?Насколько мне известно, установка класса для public, этот класс может быть доступен даже из другой сборки.

Спасибо

Ответы [ 2 ]

1 голос
/ 12 августа 2011

Если в ваш проект бизнес-логики добавлены правильные ссылки, это должно сработать.

0 голосов
/ 12 августа 2011

GetEntityById - статический метод.Возможно, в первый раз, когда вы пытаетесь использовать этот метод в качестве экземпляра ClientDAO, и во второй раз, когда вы пытаетесь использовать класс?

В любом случае, почему этот метод статичен?

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