我的代码是这样的:
public T ReadState<T>(string file_path)
{
string file_content = ...read file..from file_path...
T state = ...xml deserialize...
state.SetSomething(); // <--the problem is here <--
return state;
}
我想在各种对象类型上使用这种泛型方法。 当然,他们都实施了SetSomething()
方法
目前,编译器抱怨:
'T'不包含SetSomething()...
的定义
TIA!
答案 0 :(得分:5)
当然,他们都实施了
SetSomething()
方法
然后你应该告诉编译器:
SetSomething()
方法约束T
来实现该接口:
public T ReadState<T>(string file_path) where T : IYourNewInterface
如果你不能使所有类型都实现一个接口,最简单的解决方案可能是使用动态类型:
((dynamic) state).SetSomething();
在可行的情况下,接口解决方案远更清洁。