Я хочу преобразовать объект типа объекта в общий класс с типом T.
Класс:
public class TestClass<T>
{
public string Name { get; set; }
public T SomeValue { get; set; }
}
Метод:
public void GetValue(object obj)
{
var genericParameter = ((System.Windows.Controls.TextBox)obj).DataContext.GetType().GenericTypeArguments[0];
var castObject = ((System.Windows.Controls.TextBox)obj).DataContext as TestClass<genericParameter>;
if (castObject != null)
castObject.Name = "Test";
}
Я не могунаписать TestClass<genericParameter>
.Работает только что-то вроде TestClass<int>
или TestClass<bool>
.
Но я думаю, что плохо проверять все возможности, такие как:
public void GetValue(object obj)
{
var dataContext = ((System.Windows.Controls.TextBox) obj).DataContext;
if (dataContext is TestClass<int> castObject1)
castObject1.Name = "Test";
if (dataContext is TestClass<bool> castObject2)
castObject2.Name = "Test";
if (dataContext is TestClass<double> castObject3)
castObject3.Name = "Test";
if (dataContext is TestClass<float> castObject4)
castObject4.Name = "Test";
if (dataContext is TestClass<string> castObject5)
castObject5.Name = "Test";
}
Есть ли какое-нибудь удобное решение моей проблемы?