public class class1
{
public T Property3 {get;set;}
}
Regarding to edited version of the question:
If you need a property, which can be set with any type, the most reasonable solution here is to simply use property of type Object. For C# compiler there is no way to find out instance of which exactly type you've previously pushed into property setter.