2010-05-06 3 views
0

У меня есть файл, который будет использоваться во многих проектах приложений. Единственное отличие этих файлов - это имя ссылки webservice. такой код:Есть ли какой-либо простой способ создания сгенерированного кода?

public void Test(){ 
    Kevin.ServiceReference1.Service1Client client = new Kevin.ServiceReference1.Service1Client(); 
    // do something.... 
} 

как код выше, «Kevin.ServiceReference1» будет заменить указанного пространства имен приложения проекта. поэтому, в соответствии с DRY (не повторяйте себя), я не должен просто копировать файл во многие проекты и переименовать указанную часть вручную. есть ли какой-либо способ, я могу легко заменить некоторые части моего файла шаблона на что-то, связанное с проектом?

+0

Имеют ли клиенты службы аналогичный интерфейс? –

+0

они потребляют точный интерфейс веб-сервиса –

+0

Вы уже повторяетесь, имея прокси-код в каждом проекте. Вы можете избежать повторения, имея проект библиотеки только для прокси-кода и ссылаясь на проект из других проектов. И да, в этом решении прокси-код имеет собственное пространство имен. – Codism

ответ

2

Вы заглянули в систему шаблонов кода Microsoft T4? Это может быть именно то, что вам нужно.

Ссылки: http://msdn.microsoft.com/en-us/vstudio/cc308634.aspx
http://visualstudiomagazine.com/articles/2009/05/01/visual-studios-t4-code-generation.aspx

+0

Я никогда не слышал T4 раньше. какой позор. Я проверю это. и если это поможет, я дам вам знать. –

2

Это не вопрос СУХОЙ; в то время как файлы могут выглядеть схожими *, вы не повторяетесь, потому что одна и единственная операция - объявление и назначение переменной - различны для каждого типа **.

Хотя вы, возможно, захотите изучить, что ваши классы являются обычным родителем, если они разделяют общую цель, в вашем примере ничего нет, что предполагает, что классы, по сути, связаны каким-либо образом.

Если вы ищете способы автоматизировать процесс, чтобы сделать его проще, проверьте T4 Templates (бесплатно от Microsoft) или PostSharp. Здесь есть много других тем о генерации кода.

+0

Я не согласен с тобой адам. логика полностью та же. и веб-служба, используемая этими приложениями, одинакова, кроме пространства имен сгенерированного кода. , но я не могу управлять пространством имен сгенерированного кода ссылки на службу, могу ли я? если я могу, проблема может быть решена с использованием файла ссылки. –

0

Если единственное изменение в файле имя пространства имен и класса, вы можете извлечь все другие общей функциональности в базовом классе. Затем для каждого различного использования создайте производный класс, наследующий базовый класс. У производного класса может быть просто простой метод, который возвращает конкретное пространство имен/класс.

+0

Да, вот что я сделал сейчас. но проблема в том, что код полагается на генерируемые веб-службы объекты, которые снова возвращаются к проблеме пространства имен. –

Смежные вопросы