Вам необходимо передать класс в качестве параметра GetRequestUrl или строку, которую вы хотите добавить. Строка лучше, потому что она избавляет вас от необходимости изменять код в будущем, чтобы приспособиться к другой практике. Чтобы сделать это так, как вам кажется, нужно использовать отражение, чего следует избегать, если вы можете сделать это таким образом:
public class TestUtil
{
public string GetRequestUrl(string testType, string serviceName)
{
string serviceAPI = testType;
var requestUrl = new UriBuilder();
requestUrl.Scheme = "http";
requestUrl.Host = "svc-" + serviceName + "."
+ ConfigurationManager.AppSettings["TestEnvironment"] + "-example.com/api/";
requestUrl.Path = serviceAPI;
Uri uri = requestUrl.Uri;
return uri.ToString();
}
}
public class TestClass
{
TestUtil util = new TestUtil();
[Test]
public void Method1()
{
string fullUrl = util.GetRequestUrl(this.GetType().ToString(), "APIServiceName");
}
}
Другой вариант - передать его в конструктор и сохранить в качестве частной переменной, которая централизует данные, чтобы вы могли передать их только один раз. Использование интерфейса предпочтительнее класса:
Использование метода интерфейса:
// An empty interface is fine.
// TestUtil will then require a ServiceAPI for it to be created using it's
// constructor as a guarantee.
public interface IServiceAPI { }
using System.Reflection;
public class TestUtil
{
private _service;
// TestUtil requires a ServiceAPI class.
public TestUtil (IServiceAPI service)
{
_service = service;
}
public string GetRequestUrl(string serviceName)
{
string serviceAPI = _service.GetType().Name; // Get the class name.
var requestUrl = new UriBuilder();
requestUrl.Scheme = "http";
requestUrl.Host = "svc-" + serviceName + "."
+ ConfigurationManager.AppSettings["TestEnvironment"]
+ "-example.com/api/";
requestUrl.Path = serviceAPI;
Uri uri = requestUrl.Uri;
return uri.ToString();
}
}
// implement the IServiceAPI interface on TestClass.
public class TestClass : IServiceAPI
{
// passing in TestClass here using "this".
TestUtil util = new TestUtil(this);
[Test]
public void Method1()
{
string fullUrl = util.GetRequestUrl("APIServiceName");
}
}