Вы можете достичь этого с помощью взлома типа
xyzFactory.Instance.Name
где статическое свойство Instance имеет тип dynamic
И сделать вас xyzFactory, производным от класса DynamicObject.
public xyzFactory : DynamicObject
{
private static xyzFactory _instance = new xyzFactory();
private xyzFactory() { }
public static dynamic Instance
{
get{ return _instance; }
}
public override bool TryGetMember(GetMemberBinder binder, out object result) {
// ...
}
}