Is this the proper way to find the subclass of a polymorphic superclass?
You have to learn a lot about OOP... There is no polymorphism in your code, as this principle is designed to tackle exactly the kind of code you've written. 

The code that uses Asset should never branch its logic based on actual derived type (otherwise it would brake Open-Closed Principle), instead classes should use polymorphism to specify differences in logic. Here is simple example based on your code:

public abstract class Asset
{
    public string Name {get; set;}
    public abstract decimal CalculateValue();
    //... other common properties and methods of Asset
}

public class Property : Asset
{
    public decimal Value {get;set;}

    public override decimal CalculateValue()
    {
        return Value;
    }
}

//usage
public static void PrintAsset(Asset theAsset)
{
    Console.WriteLine(theAsset.Name);
    Console.WriteLine(theAsset.GetType().ToString());

    string assetValue = theAsset.CalculateValue().ToString();
    Console.WriteLine(assetValue + "\n");
}