У меня есть служба WCF, которая предоставляет общий интерфейс (и у службы есть универсальный класс, реализующий этот интерфейс).
Затем я пытаюсь разместить эту службу в приложении с управляемой консолью (только для целей тестирования прямо сейчас). Строка ThreadStart приводит к ошибке, говорящей, что тип для T не найден.
Теперь я не могу сделать универсальный Main, выполнив Main (string [] args), где T: IComparable , потому что тогда он говорит, Главная точка входа не найдена.
У меня вопрос, как вообще справиться с этим делом?
// Service Hosting app
static void Main(string[] args)
{
new Thread(new ThreadStart(StartBSTService<T>)).Start();
}
static void StartBSTService<T>() where T : IComparable<T>
{
string baseAddress = "http://localhost:8080/bst";
StartAService(typeof(BSTService<T>), baseAddress);
}
РЕДАКТИРОВАТЬ: Добавление класса обслуживания, а также
[ServiceContract(Namespace = "http://Microsoft.Samples.GettingStarted")]
public interface IBSTService<T> where T : IComparable<T> //: ICollection<T>
{
[OperationContract]
void Add(T toAdd);
// For brevity, not providing all other methods
// but they are similar IColleciton methods.
}
public class BSTService<T> : IBSTService<T> where T : IComparable<T>
{
BinarySearchTree<T> tree = new BinarySearchTree<T>();
public void Add(T toAdd)
{
tree.Add(toAdd);
}
}
Клиент будет использовать его так же, как вы будете использовать любой универсальный тип:
BSTService<string> client = new BSTService<string>;
// OR
BSTService<int> client = new BSTService<int>;
EDIT2:
Точка @ asawyer кажется логичной, что Main является потребителем универсального класса, поэтому он должен предоставлять тип, но тогда мне нужно начинать новую конечную точку для каждого типа? и как справиться с этим. Как я могу написать служебную оболочку, которая предоставляет только один метод, скажем INIT (Type typeOfBST). клиент вызывает это, чтобы сообщить службе, что он хочет инициировать либо int, либо строку BST. а затем клиент вызывает реальные методы с заданным типом, и сервисные каналы направляют эти вызовы к различным конечным точкам, каждая из которых предоставляет BST с различными типами.
Как вообще обращаться с такими случаями?