Mam interfejs o nazwie IAuditable następująco:Podania klasa typu metody rodzajowe w czasie wykonywania
public interface IAuditable
{
string AuditSummary
{
get;
}
string AuditDetails
{
get;
}
}
i dwie ogólne metody w klasie ścieżka audytu następująco:
public T GetActualOldValue<T>() where T : IAuditable
{
return FromXElement<T>(OldValue);
}
public T GetActualNewValue<T>() where T : IAuditable
{
return FromXElement<T>(NewValue);
}
jak mam jednego nieruchomość na powrót Podsumowanie Audytu uzyskując klasę w czasie wykonywania następująco:
public string AuditSummary
{
get
{
if (HasNewValue || HasOldValue)
{
string libraryVal = GetLibraryValue();
Assembly assembly = Assembly.Load(libraryVal);
foreach (Type type in assembly.GetTypes())
{
if (type.IsClass == true)
{
if (type.FullName.EndsWith("." + ClassName))
{
/*Here i want to call GetActualNewValue<foundClass>().AuditSummary
* or GetActualOldValue<foundClass>().AuditSummary;
*/
}
}
}
}
return "";
}
}
Jak wiesz, możemy znaleźć klasę w czasie wykonywania w konkretnej bibliotece, Uwaga: nie chcę wywoływać ogólnej metody w czasie wykonywania, chcę tylko wywołać ogólną metodę z założonym, innymi słowy, jak mogę przekazać konkretną bibliotekę klasa GetActualNewValue < ...>() jako T,
AuditTrail auditTrail = AuditTrail.GetAuditTrail(76);
string summmary = auditTrail.GetActualOldValue<DTClient>().AuditSummary;
string details = auditTrail.GetActualOldValue<DTClient>().AuditDetails;
Ta praca kod idealnie, ale głównym problemem jest DTClient musi znaleźć w czasie wykonywania i zdefiniować jako T GetActualValue.
Dzięki wszystkim.
Tak więc rozumiem, starasz się iterację typów w czasie wykonywania, należy umieścić je w zmiennej, a następnie użyć tej zmiennej jako parametr typu rodzajowego na wywołanie metody? – Chris